Solving Leetcode Interviews in Seconds with AI: Prime Pairs With Target Sum
Introduction
In this blog post, we will explore how to solve the LeetCode problem "2761" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.
Problem Statement
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. Constraints: 1 <= n <= 106
Explanation
Here's the approach, complexity analysis, and Python code for the prime number pair problem:
- Sieve of Eratosthenes: Use the Sieve of Eratosthenes to efficiently precompute all prime numbers up to
n. This avoids repeated primality tests. - Iterate and Check: Iterate through numbers from 2 up to
n // 2. For each numberx, check if bothxandn - xare prime using the precomputed prime table. Sorted Pairs: If both are prime, add the pair
[x, n - x]to the result list. The iteration ensures the list is sorted by the first element.Runtime Complexity: O(n log log n) for Sieve of Eratosthenes + O(n/2) for iteration and checking. Dominates to O(n log log n).
- Storage Complexity: O(n) for storing the prime table.
Code
def prime_number_pairs(n: int) -> list[list[int]]:
"""
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.
For example:
prime_number_pairs(10) == [[3, 7], [5, 5]]
prime_number_pairs(2) == []
"""
if n < 2:
return []
is_prime = [True] * (n + 1)
is_prime[0] = is_prime[1] = False
for i in range(2, int(n**0.5) + 1):
if is_prime[i]:
for j in range(i * i, n + 1, i):
is_prime[j] = False
result = []
for x in range(2, n // 2 + 1):
if is_prime[x] and is_prime[n - x]:
result.append([x, n - x])
return result