Given a positive integer N greater than 1, the task is to find the minimum count of Prime Numbers whose sum is equal to given N.
Examples:
Input: N = 100
Output: 2
Explanation:
100 can be written as sum of 2 prime numbers 97 and 3.Input: N = 25
Output: 2
Explanation:
25 can be written as sum of 2 prime numbers 23 and 2.
Approach:
For the minimum number of primes whose sum is the given number N, Prime Numbers must be as large as possible. Following are the observation for the above problem statement:
- Case 1: If the number is prime, then the minimum primes numbers required to make sum N is 1.
- Case 2: If the number is even, then it can be expressed as a sum of two primes as per the Goldbach’s Conjecture for every even integer greater than 2. Therefore the minimum prime number required to make the sum N is 2.
- Case 3: If the number is odd:
- If (N-2) is prime, then the minimum prime number required to make the given sum N is 2.
- Else The minimum prime numbers required to make the given sum N is 3 because:
As N is odd, then (N - 3) is even. Hence As per case 2: The minimum prime number required to make the sum (N-3) is 2. Therefore, The minimum prime number required to make the sum N is 3(2+1).
Below are the steps:
- Check whether the given number N is prime or not, by using the approach discussed in this article. If Yes then print 1.
- Else as per the above Cases print the minimum number of Prime Numbers required to make the given sum N.
Below is the implementation of the above approach:
C++
// C++ program for the above approach#include <bits/stdc++.h>using namespace std;// Function to check if n is primebool isPrime(int n){ for (int i = 2; i * i <= n; i++) { if (n % i == 0) { return false; } } return true;}// Function to count the minimum// prime required for given sum Nvoid printMinCountPrime(int N){ int minCount; // Case 1: if (isPrime(N)) { minCount = 1; } // Case 2: else if (N % 2 == 0) { minCount = 2; } // Case 3: else { // Case 3a: if (isPrime(N - 2)) { minCount = 2; } // Case 3b: else { minCount = 3; } } cout << minCount << endl;}// Driver Codeint main(){ int N = 100; // Function Call printMinCountPrime(N); return 0;} |
Java
// Java program for the above approachclass GFG{// Function to check if n is primestatic boolean isPrime(int n){ for (int i = 2; i * i <= n; i++) { if (n % i == 0) { return false; } } return true;}// Function to count the minimum// prime required for given sum Nstatic void printMinCountPrime(int N){ int minCount; // Case 1: if (isPrime(N)) { minCount = 1; } // Case 2: else if (N % 2 == 0) { minCount = 2; } // Case 3: else { // Case 3a: if (isPrime(N - 2)) { minCount = 2; } // Case 3b: else { minCount = 3; } } System.out.print(minCount +"\n");}// Driver Codepublic static void main(String[] args){ int N = 100; // Function Call printMinCountPrime(N);}}// This code is contributed by 29AjayKumar |
Python3
# Python3 program for the above approach # Function to check if n is prime def isPrime(n) : for i in range(2, int(n ** (1/2)) + 1) : if (n % i == 0) : return False; return True; # Function to count the minimum # prime required for given sum N def printMinCountPrime(N) : # Case 1: if (isPrime(N)) : minCount = 1; # Case 2: elif (N % 2 == 0) : minCount = 2; # Case 3: else : # Case 3a: if (isPrime(N - 2)) : minCount = 2; # Case 3b: else : minCount = 3; print(minCount) ; # Driver Code if __name__ == "__main__" : N = 100; # Function Call printMinCountPrime(N); # This code is contributed by AnkitRai01 |
C#
// C# program for the above approachusing System;class GFG{// Function to check if n is primestatic bool isPrime(int n){ for (int i = 2; i * i <= n; i++) { if (n % i == 0) { return false; } } return true;}// Function to count the minimum// prime required for given sum Nstatic void printMinCountPrime(int N){ int minCount; // Case 1: if (isPrime(N)) { minCount = 1; } // Case 2: else if (N % 2 == 0) { minCount = 2; } // Case 3: else { // Case 3a: if (isPrime(N - 2)) { minCount = 2; } // Case 3b: else { minCount = 3; } } Console.WriteLine(minCount +"\n");}// Driver Codepublic static void Main(string[] args){ int N = 100; // Function Call printMinCountPrime(N);}}// This code is contributed by AnkitRai01 |
Javascript
<script>// JavaScript program for the above approach// Function to check if n is primefunction isPrime(n){ for (let i = 2; i * i <= n; i++) { if (n % i == 0) { return false; } } return true;}// Function to count the minimum// prime required for given sum Nfunction printMinCountPrime(N){ let minCount; // Case 1: if (isPrime(N)) { minCount = 1; } // Case 2: else if (N % 2 == 0) { minCount = 2; } // Case 3: else { // Case 3a: if (isPrime(N - 2)) { minCount = 2; } // Case 3b: else { minCount = 3; } } document.write(minCount + "<br>");}// Driver Codelet N = 100;// Function CallprintMinCountPrime(N);// This code is contributed by gfgking</script> |
2
Time Complexity: O(?N), where N is the given number.
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Information on that Topic: geeksforgeeks.org/minimum-number-of-primes-required-such-that-their-sum-is-equal-to-n/ […]