Sieve with Easy approach.
IntuitionTo solve the problem we need to find all pairs of prime numbers(x,y) such that x+y =n. The Sieve of Eratothenes is a natural choice for efficiently fin
# Intuition
<!-- Describe your first thoughts on how to solve this problem. -->
To solve the problem we need to find all pairs of prime numbers(x,y) such that x+y =n. The **Sieve of Eratothenes** is a natural choice for efficiently finding all primes upto n.

# Approach
<!-- Describe your approach to solving the problem. -->
1. Use the Sieve of Eratosthenes:

    Create a boolean array prime of size n+1, where prime[i]        indicates if
    i is a prime number.
    Set all indices to true initially, then mark non-prime indices as   false.
For every number i starting from 2, mark all multiples of i as non-prime. 
2. Iterate to Find Pairs: Loop through numbers from 2 to n.
For each number i, check if i and n−i are both prime.
Add (i,n−i) as a pair if both are prime.
Mark these numbers as used to avoid duplicates.

# Complexity
- Time complexity: O(nLog(logn))
<!-- Add your time complexity here, e.g. $$O(n)$$ -->

- Space complexity: O(n)
<!-- Add your space complexity here, e.g. $$O(n)$$ -->

# Code
```csharp []
public class Solution {
    public IList<IList<int>> FindPrimePairs(int n) {
        // Handle edge case where no pairs are possible
        if (n < 3) return new List<IList<int>>();

        // Step 1: Prepare Sieve of Eratosthenes
        bool[] prime = new bool[n + 1];
        Array.Fill(prime, true);
        prime[0] = false; // 0 is not prime
        prime[1] = false; // 1 is not prime

        for (int i = 2; i * i <= n; i++) {
            if (prime[i]) {
                for (int j = i * i; j <= n; j += i) {
                    prime[j] = false;
                }
            }
        }

        // Step 2: Find all prime pairs (x, y) such that x + y = n
        IList<IList<int>> ans = new List<IList<int>>();
        for (int i = 2; i <= n / 2; i++) {
            int complement = n - i;
            if (prime[i] && prime[complement]) {
                ans.Add(new List<int> { i, complement });
                prime[i] = false;         // Mark as used
                prime[complement] = false; // Avoid duplicates
            }
        }

        return ans;
    }
}
```
['C#']