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

• Last Updated : 18 Mar, 2022

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:
7 and 10 are the only valid numbers.
sumPFactors(7) = 7
sumPFactors(10) = 2 + 5 = 7
Input: N = 25, K = 5
Output:

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`

## Javascript

 ``

Output:

`2`

Time Complexity: O(N2)

Auxiliary Space: O(MAX)

My Personal Notes arrow_drop_up
Related Articles