# Count of numbers below N whose sum of prime divisors is K

Given two integers K and N, the task is to find the count of integers from the range [2, N – 1] whose sum of prime divisors is K

Example:

Input: N = 20, K = 7
Output: 2
7 and 10 are the only valid numbers.
sumPFactors(7) = 7
sumPFactors(10) = 2 + 5 = 7

Input: N = 25, K = 5
Output: 5

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

Approach: Create an array sumPF[] where sumPF[i] stores the sum of prime divisors of i which can be easily calculated using the approach used in this article. Now, initialise a variable count = 0 and run a loop from 2 to N – 1 and for every element i if sumPF[i] = K then increment the count.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `#define MAX 1000001 ` ` `  `// Function to return the count of numbers ` `// below N whose sum of prime factors is K ` `int` `countNum(``int` `N, ``int` `K) ` `{ ` `    ``// To store the sum of prime factors ` `    ``// for all the numbers ` `    ``int` `sumPF[MAX] = { 0 }; ` ` `  `    ``for` `(``int` `i = 2; i < N; i++) { ` ` `  `        ``// If i is prime ` `        ``if` `(sumPF[i] == 0) { ` ` `  `            ``// Add i to all the numbers ` `            ``// which are divisible by i ` `            ``for` `(``int` `j = i; j < N; j += i) { ` `                ``sumPF[j] += i; ` `            ``} ` `        ``} ` `    ``} ` ` `  `    ``// To store the count of required numbers ` `    ``int` `count = 0; ` `    ``for` `(``int` `i = 2; i < N; i++) { ` `        ``if` `(sumPF[i] == K) ` `            ``count++; ` `    ``} ` ` `  `    ``// Return the required count ` `    ``return` `count; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `N = 20, K = 7; ` ` `  `    ``cout << countNum(N, K); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach ` `import` `java.util.*; ` ` `  `class` `GFG  ` `{ ` `static` `int` `MAX = ``1000001``; ` ` `  `// Function to return the count of numbers ` `// below N whose sum of prime factors is K ` `static` `int` `countNum(``int` `N, ``int` `K) ` `{ ` `    ``// To store the sum of prime factors ` `    ``// for all the numbers ` `    ``int` `[]sumPF = ``new` `int``[MAX]; ` ` `  `    ``for` `(``int` `i = ``2``; i < N; i++)  ` `    ``{ ` ` `  `        ``// If i is prime ` `        ``if` `(sumPF[i] == ``0``)  ` `        ``{ ` ` `  `            ``// Add i to all the numbers ` `            ``// which are divisible by i ` `            ``for` `(``int` `j = i; j < N; j += i)  ` `            ``{ ` `                ``sumPF[j] += i; ` `            ``} ` `        ``} ` `    ``} ` ` `  `    ``// To store the count of required numbers ` `    ``int` `count = ``0``; ` `    ``for` `(``int` `i = ``2``; i < N; i++) ` `    ``{ ` `        ``if` `(sumPF[i] == K) ` `            ``count++; ` `    ``} ` ` `  `    ``// Return the required count ` `    ``return` `count; ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String[] args)  ` `{ ` `    ``int` `N = ``20``, K = ``7``; ` ` `  `    ``System.out.println(countNum(N, K)); ` `} ` `}  ` ` `  `// This code is contributed by Rajput-Ji `

## Python3

 `# Python3 implementation of the approach  ` `MAX` `=` `1000001` ` `  `# Function to return the count of numbers  ` `# below N whose sum of prime factors is K  ` `def` `countNum(N, K) :  ` ` `  `    ``# To store the sum of prime factors  ` `    ``# for all the numbers  ` `    ``sumPF ``=` `[``0``] ``*` `MAX``;  ` ` `  `    ``for` `i ``in` `range``(``2``, N) : ` `         `  `        ``# If i is prime  ` `        ``if` `(sumPF[i] ``=``=` `0``) :  ` ` `  `            ``# Add i to all the numbers  ` `            ``# which are divisible by i  ` `            ``for` `j ``in` `range``(i, N, i) : ` `                ``sumPF[j] ``+``=` `i;  ` ` `  `    ``# To store the count of required numbers  ` `    ``count ``=` `0``;  ` `    ``for` `i ``in` `range``(``2``, N) : ` `        ``if` `(sumPF[i] ``=``=` `K) : ` `            ``count ``+``=` `1``;  ` ` `  `    ``# Return the required count  ` `    ``return` `count;  ` ` `  `# Driver code  ` `if` `__name__ ``=``=` `"__main__"` `:  ` ` `  `    ``N ``=` `20``; K ``=` `7``; ` `     `  `    ``print``(countNum(N, K));  ` ` `  `# This code is contributed by AnkitRai01 `

## C#

 `// C# implementation of the approach ` `using` `System; ` `     `  `class` `GFG  ` `{ ` `static` `int` `MAX = 1000001; ` ` `  `// Function to return the count of numbers ` `// below N whose sum of prime factors is K ` `static` `int` `countNum(``int` `N, ``int` `K) ` `{ ` `    ``// To store the sum of prime factors ` `    ``// for all the numbers ` `    ``int` `[]sumPF = ``new` `int``[MAX]; ` ` `  `    ``for` `(``int` `i = 2; i < N; i++)  ` `    ``{ ` ` `  `        ``// If i is prime ` `        ``if` `(sumPF[i] == 0)  ` `        ``{ ` ` `  `            ``// Add i to all the numbers ` `            ``// which are divisible by i ` `            ``for` `(``int` `j = i; j < N; j += i)  ` `            ``{ ` `                ``sumPF[j] += i; ` `            ``} ` `        ``} ` `    ``} ` ` `  `    ``// To store the count of required numbers ` `    ``int` `count = 0; ` `    ``for` `(``int` `i = 2; i < N; i++) ` `    ``{ ` `        ``if` `(sumPF[i] == K) ` `            ``count++; ` `    ``} ` ` `  `    ``// Return the required count ` `    ``return` `count; ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main(String[] args)  ` `{ ` `    ``int` `N = 20, K = 7; ` ` `  `    ``Console.WriteLine(countNum(N, K)); ` `} ` `} ` ` `  `// This code is contributed by 29AjayKumar `

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.