Skip to content

Latest commit

 

History

History
49 lines (41 loc) · 1.52 KB

2761_prime_pairs_with_target_sum.md

File metadata and controls

49 lines (41 loc) · 1.52 KB

You are given an integer n. We say that two integers x and y form a prime number pair if:

  • 1 <= x <= y <= n
  • x + y == n
  • x and y are prime numbers

Return the 2D sorted list of prime number pairs [xi, yi]. The list should be sorted in increasing order of xi. If there are no prime number pairs at all, return an empty array.

Note: A prime number is a natural number greater than 1 with only two factors, itself and 1.

Example 1:

Input: n = 10
Output: [[3,7],[5,5]]
Explanation: In this example, there are two prime pairs that satisfy the criteria. 
These pairs are [3,7] and [5,5], and we return them in the sorted order as described in the problem statement.

Example 2:

Input: n = 2
Output: []
Explanation: We can show that there is no prime number pair that gives a sum of 2, so we return an empty array. 

Solution

class Solution:
    def sieve_of_eratosthenes(self, num):
        prime = [True for i in range(num + 1)]
        p = 2
        while (p * p <= num):
            if prime[p]:
                for i in range(p * p, num + 1, p):
                    prime[i] = False
            p += 1

        return prime


    def findPrimePairs(self, n: int) -> List[List[int]]:
        out = []
        primes = self.sieve_of_eratosthenes(n)
        for i in range(2, n // 2 + 1):
            if primes[i] and primes[n - i]:
                out.append([i, n - i])
        return out