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

07 Apr, 2021
Given a prime number . The task is to check if it is possible to express as 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 and 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 number 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++
Java
Python3
C#
PHP
Javascript
// C++ program to check if a prime number// can be expressed as sum of// two Prime Numbers#include <bits/stdc++.h>using namespace std; // Function to check whether a number// is prime or notbool 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 Numbersbool 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 codeint main(){    int n = 13;     if (isPossible(n))        cout << "Yes";    else        cout << "No";     return 0;}
// 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 program to check if a prime# number can be expressed as sum of# two Prime Numbersimport math # Function to check whether a number# is prime or notdef 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 Numbersdef 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 coden = 13if isPossible(n) == True:    print("Yes")else:    print("No")     # This code is contributed by Shrikant13
// C# program to check if a prime// number can be expressed as sum// of two Prime Numbersusing System; class GFG{ // Function to check whether a// number is prime or notstatic 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 Numbersstatic 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 codepublic static void Main(){    int n = 13;     if (isPossible(n) == true)        Console.Write("Yes");    else        Console.Write("No");}} // This code is contributed// by ChitraNayal
<?php// PHP program to check if a prime// number can be expressed as sum// of two Prime Numbers // Function to check whether a// number is prime or notfunction isPrime($n){    if ($n <= 1)        return false;     for ($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 Numbersfunction isPossible($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$n = 13; if (isPossible($n))    echo ("Yes");else    echo("No"); // This code is contributed// by Shivi_Aggarwal?>
<script> // Javascript program to check if a// prime number can be expressed as// sum of two Prime Numbers // Function to check whether a number// is prime or notfunction isPrime(n){    if (n <= 1)        return false;     for(var i = 2; i <= parseInt(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 Numbersfunction isPossible(N){         // If the number is prime,    // and number-2 is also prime    if (isPrime(N) && isPrime(N - 2))        return true;    else        return false;} // Driver codevar n = 13;if (isPossible(n))    document.write("Yes");else    document.write("No");     // This code is contributed by noob2000 </script>
Yes
 
ankthon
ukasp
Shivi_Aggarwal
shrikanth13
UtkarshMaharana
noob2000
Prime Number
sieve
Mathematical
Mathematical
Prime Number
sieve
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Merge two sorted arrays
Modulo Operator (%) in C/C++ with Examples
Prime Numbers
Program to find sum of elements in a given array
Program for factorial of a number
Operators in C / C++
Minimum number of jumps to reach end
Algorithm to solve Rubik's Cube
Program for Decimal to Binary Conversion
The Knight's tour problem | Backtracking-1