# Check if a prime number can be expressed as sum of two Prime Numbers

• Difficulty Level : Medium
• Last Updated : 27 Sep, 2022

Given a prime number N. The task is to check if it is possible to express N as the sum of two separate prime numbers.

Note: The range of N is less than 108.

Examples:

```Input: N = 13
Output: Yes
Explanation: The number 13 can be written as 11 + 2,
here 11 and 2 are both prime.

Input: N = 11
Output: No```

Simple Solution: A simple solution is to create a sieve to store all the prime numbers less than the number N. Then run a loop from 1 to N and check whether i and n-i are both prime or not. If yes then print Yes, else No.

Efficient solution: Apart from 2, all of the prime numbers are odd. So it is not possible to represent a prime number (which is odd) to be written as a sum of two odd prime numbers, so we are sure that one of the two prime numbers should be 2. So we have to check whether n-2 is prime or not. If it holds we print Yes else No.
For example, if the number is 19 then we have to check whether 19-2 = 17 is a prime number or not. If 17 is a prime number then print yes otherwise print no.

Below is the implementation of the above approach:

## C

 `// C program to check if a prime number``// can be expressed as sum of``// two Prime Numbers``#include ``#include ``#include ` `// Function to check whether a number``// is prime or not``bool` `isPrime(``int` `n)``{``    ``if` `(n <= 1)``        ``return` `false``;` `    ``for` `(``int` `i = 2; i <= ``sqrt``(n); i++)``    ``{``        ``if` `(n % i == 0)``            ``return` `false``;``    ``}` `    ``return` `true``;``}` `// Function to check if a prime number``// can be expressed as sum of``// two Prime Numbers``bool` `isPossible(``int` `N)``{``    ``// if the number is prime,``    ``// and number-2 is also prime``    ``if` `(isPrime(N) && isPrime(N - 2))``        ``return` `true``;``    ``else``        ``return` `false``;``}` `// Driver code``int` `main()``{``    ``int` `n = 13;` `    ``if` `(isPossible(n))``        ``printf``(``"%s"``, ``"Yes"``);``    ``else``        ``printf``(``"%s"``, ``"No"``);` `    ``return` `0;``}`

## C++

 `// C++ program to check if a prime number``// can be expressed as sum of``// two Prime Numbers``#include ``using` `namespace` `std;` `// Function to check whether a number``// is prime or not``bool` `isPrime(``int` `n)``{``    ``if` `(n <= 1)``        ``return` `false``;` `    ``for` `(``int` `i = 2; i <= ``sqrt``(n); i++) {``        ``if` `(n % i == 0)``            ``return` `false``;``    ``}` `    ``return` `true``;``}` `// Function to check if a prime number``// can be expressed as sum of``// two Prime Numbers``bool` `isPossible(``int` `N)``{``    ``// if the number is prime,``    ``// and number-2 is also prime``    ``if` `(isPrime(N) && isPrime(N - 2))``        ``return` `true``;``    ``else``        ``return` `false``;``}` `// Driver code``int` `main()``{``    ``int` `n = 13;` `    ``if` `(isPossible(n))``        ``cout << ``"Yes"``;``    ``else``        ``cout << ``"No"``;` `    ``return` `0;``}`

## Java

 `// Java program to check if a prime number``// can be expressed as sum of``// two Prime Numbers` `public` `class` `GFG{``    ` `    ``// Function to check whether a number``    ``// is prime or not``    ``static` `boolean` `isPrime(``int` `n)``    ``{``        ``if` `(n <= ``1``)``            ``return` `false``;``    ` `        ``for` `(``int` `i = ``2``; i <= Math.sqrt(n); i++) {``            ``if` `(n % i == ``0``)``                ``return` `false``;``        ``}``    ` `        ``return` `true``;``    ``}``    ` `    ``// Function to check if a prime number``    ``// can be expressed as sum of``    ``// two Prime Numbers``    ``static` `boolean` `isPossible(``int` `N)``    ``{``        ``// if the number is prime,``        ``// and number-2 is also prime``        ``if` `(isPrime(N) && isPrime(N - ``2``))``            ``return` `true``;``        ``else``            ``return` `false``;``    ``}``    ` `     ``// Driver code``     ``public` `static` `void` `main(String []args){``         ` `        ``int` `n = ``13``;``    ` `        ``if` `(isPossible(n) == ``true``)``            ``System.out.println(``"Yes"``);``        ``else``            ``System.out.println(``"No"``);``     ``}``     ``// This code is contributed by ANKITRAI1``}`

## Python3

 `# Python3 program to check if a prime``# number can be expressed as sum of``# two Prime Numbers``import` `math` `# Function to check whether a number``# is prime or not``def` `isPrime(n):``    ``if` `n <``=` `1``:``        ``return` `False``    ` `    ``if` `n ``=``=` `2``:``        ``return` `True``        ` `    ``if` `n``%``2` `=``=` `0``:``        ``return` `False``        ` `    ``for` `i ``in` `range``(``3``, ``int``(math.sqrt(n))``+``1``, ``2``):``        ``if` `n``%``i ``=``=` `0``:``            ``return` `False``    ``return` `True` `# Function to check if a prime number``# can be expressed as sum of``# two Prime Numbers``def` `isPossible(n):` `    ``# if the number is prime,``    ``# and number-2 is also prime``    ``if` `isPrime(n) ``and` `isPrime(n ``-` `2``):``        ``return` `True``    ``else``:``        ``return` `False` `# Driver code``n ``=` `13``if` `isPossible(n) ``=``=` `True``:``    ``print``(``"Yes"``)``else``:``    ``print``(``"No"``)``    ` `# This code is contributed by Shrikant13`

## C#

 `// C# program to check if a prime``// number can be expressed as sum``// of two Prime Numbers``using` `System;` `class` `GFG``{` `// Function to check whether a``// number is prime or not``static` `bool` `isPrime(``int` `n)``{``    ``if` `(n <= 1)``        ``return` `false``;` `    ``for` `(``int` `i = 2;``             ``i <= Math.Sqrt(n); i++)``    ``{``        ``if` `(n % i == 0)``            ``return` `false``;``    ``}` `    ``return` `true``;``}` `// Function to check if a prime``// number can be expressed as sum``// of two Prime Numbers``static` `bool` `isPossible(``int` `N)``{``    ``// if the number is prime,``    ``// and number-2 is also prime``    ``if` `(isPrime(N) && isPrime(N - 2))``        ``return` `true``;``    ``else``        ``return` `false``;``}` `// Driver code``public` `static` `void` `Main()``{``    ``int` `n = 13;` `    ``if` `(isPossible(n) == ``true``)``        ``Console.Write(``"Yes"``);``    ``else``        ``Console.Write(``"No"``);``}``}` `// This code is contributed``// by ChitraNayal`

## PHP

 ``

## Javascript

 ``

Output:

`Yes`

Time Complexity: O(sqrt(n))

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up