# Count of primes below N which can be expressed as the sum of two primes

Given an integer N, the task is to find the count of all the primes below N which can be expressed as the sum of two primes.

Examples:

Input: N = 6
Output: 1
5 is the only such prime below 6.
2 + 3 = 5.

Input: N = 11
Output: 2

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Create an array prime[] where prime[i] will store whether i is prime or not using Sieve of Eratosthenes. Now for every prime from the range [1, N – 1], check whether it can be expressed as the sum of two primes using the approach discussed here.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `const` `int` `MAX = 100005; ` `bool` `prime[MAX]; ` ` `  `// Function for Sieve of Eratosthenes ` `void` `SieveOfEratosthenes() ` `{ ` ` `  `    ``memset``(prime, ``true``, ``sizeof``(prime)); ` ` `  `    ``// false here indicates ` `    ``// that it is not prime ` `    ``prime[0] = ``false``; ` `    ``prime[1] = ``false``; ` ` `  `    ``for` `(``int` `p = 2; p * p <= MAX; p++) { ` ` `  `        ``// If prime[p] is not changed, ` `        ``// then it is a prime ` `        ``if` `(prime[p]) { ` ` `  `            ``// Update all multiples of p, ` `            ``// set them to non-prime ` `            ``for` `(``int` `i = p * 2; i <= MAX; i += p) ` `                ``prime[i] = ``false``; ` `        ``} ` `    ``} ` `} ` ` `  `// Function to return the count of primes ` `// less than or equal to n which can be ` `// expressed as the sum of two primes ` `int` `countPrimes(``int` `n) ` `{ ` `    ``SieveOfEratosthenes(); ` ` `  `    ``// To store the required count ` `    ``int` `cnt = 0; ` ` `  `    ``for` `(``int` `i = 2; i < n; i++) { ` ` `  `        ``// If the integer is prime and it ` `        ``// can be expressed as the sum of ` `        ``// 2 and a prime number ` `        ``if` `(prime[i] && prime[i - 2]) ` `            ``cnt++; ` `    ``} ` ` `  `    ``return` `cnt; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `n = 11; ` ` `  `    ``cout << countPrimes(n); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach ` `class` `GFG ` `{ ` ` `  `static` `int` `MAX = ``100005``; ` `static` `boolean` `[]prime = ``new` `boolean``[MAX]; ` ` `  `// Function for Sieve of Eratosthenes ` `static` `void` `SieveOfEratosthenes() ` `{ ` ` `  `    ``for` `(``int` `i = ``0``; i < MAX; i++) ` `        ``prime[i] = ``true``; ` ` `  `    ``// false here indicates ` `    ``// that it is not prime ` `    ``prime[``0``] = ``false``; ` `    ``prime[``1``] = ``false``; ` ` `  `    ``for` `(``int` `p = ``2``; p * p < MAX; p++)  ` `    ``{ ` `        ``// If prime[p] is not changed, ` `        ``// then it is a prime ` `        ``if` `(prime[p]) ` `        ``{ ` `            ``// Update all multiples of p, ` `            ``// set them to non-prime ` `            ``for` `(``int` `i = p * ``2``; i < MAX; i += p) ` `                ``prime[i] = ``false``; ` `        ``} ` `    ``} ` `} ` ` `  `// Function to return the count of primes ` `// less than or equal to n which can be ` `// expressed as the sum of two primes ` `static` `int` `countPrimes(``int` `n) ` `{ ` `    ``SieveOfEratosthenes(); ` ` `  `    ``// To store the required count ` `    ``int` `cnt = ``0``; ` ` `  `    ``for` `(``int` `i = ``2``; i < n; i++) ` `    ``{ ` `        ``// If the integer is prime and it ` `        ``// can be expressed as the sum of ` `        ``// 2 and a prime number ` `        ``if` `(prime[i] && prime[i - ``2``]) ` `            ``cnt++; ` `    ``} ` `    ``return` `cnt; ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``int` `n = ``11``; ` ` `  `    ``System.out.print(countPrimes(n)); ` `} ` `} ` ` `  `// This code is contributed by 29AjayKumar `

## Python3

 `# Python3 implementation of the approach ` `MAX` `=` `100005` `prime ``=` `[``True` `for` `i ``in` `range``(``MAX``)] ` ` `  `# Function for Sieve of Eratosthenes ` `def` `SieveOfEratosthenes(): ` ` `  `    ``# False here indicates ` `    ``# that it is not prime ` `    ``prime[``0``] ``=` `False` `    ``prime[``1``] ``=` `False` ` `  `    ``for` `p ``in` `range``(``MAX``): ` ` `  `        ``if``(p ``*` `p > ``MAX``): ` `            ``break` ` `  `        ``# If prime[p] is not changed, ` `        ``# then it is a prime ` `        ``if` `(prime[p]): ` ` `  `            ``# Update all multiples of p, ` `            ``# set them to non-prime ` `            ``for` `i ``in` `range``(``2` `*` `p, ``MAX``, p): ` `                ``prime[i] ``=` `False` ` `  `# Function to return the count of primes ` `# less than or equal to n which can be ` `# expressed as the sum of two primes ` `def` `countPrimes(n): ` `    ``SieveOfEratosthenes() ` ` `  `    ``# To store the required count ` `    ``cnt ``=` `0` ` `  `    ``for` `i ``in` `range``(``2``, n): ` ` `  `        ``# If the integer is prime and it ` `        ``# can be expressed as the sum of ` `        ``# 2 and a prime number ` `        ``if` `(prime[i] ``and` `prime[i ``-` `2``]): ` `            ``cnt ``+``=` `1` ` `  `    ``return` `cnt ` ` `  `# Driver code ` `n ``=` `11` ` `  `print``(countPrimes(n)) ` ` `  `# This code is contributed by Mohit Kumar `

## C#

 `    ``// C# implementation of the approach ` `using` `System; ` ` `  `class` `GFG ` `{ ` `static` `int` `MAX = 100005; ` `static` `bool` `[]prime = ``new` `bool``[MAX]; ` ` `  `// Function for Sieve of Eratosthenes ` `static` `void` `SieveOfEratosthenes() ` `{ ` `    ``for` `(``int` `i = 0; i < MAX; i++) ` `        ``prime[i] = ``true``; ` ` `  `    ``// false here indicates ` `    ``// that it is not prime ` `    ``prime[0] = ``false``; ` `    ``prime[1] = ``false``; ` ` `  `    ``for` `(``int` `p = 2; p * p < MAX; p++)  ` `    ``{ ` `        ``// If prime[p] is not changed, ` `        ``// then it is a prime ` `        ``if` `(prime[p]) ` `        ``{ ` `            ``// Update all multiples of p, ` `            ``// set them to non-prime ` `            ``for` `(``int` `i = p * 2; i < MAX; i += p) ` `                ``prime[i] = ``false``; ` `        ``} ` `    ``} ` `} ` ` `  `// Function to return the count of primes ` `// less than or equal to n which can be ` `// expressed as the sum of two primes ` `static` `int` `countPrimes(``int` `n) ` `{ ` `    ``SieveOfEratosthenes(); ` ` `  `    ``// To store the required count ` `    ``int` `cnt = 0; ` ` `  `    ``for` `(``int` `i = 2; i < n; i++) ` `    ``{ ` `        ``// If the integer is prime and it ` `        ``// can be expressed as the sum of ` `        ``// 2 and a prime number ` `        ``if` `(prime[i] && prime[i - 2]) ` `            ``cnt++; ` `    ``} ` `    ``return` `cnt; ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main(String[] args) ` `{ ` `    ``int` `n = 11; ` ` `  `    ``Console.Write(countPrimes(n)); ` `} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

Output:

```2
```

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.