# Sum of all the prime divisors of a number | Set 2

• Last Updated : 06 Jul, 2021

Given a number N, the task is to find the sum of all the prime factors of N

Examples:

Input: 10
Output: 7
Explanation: 2, 5 are prime divisors of 10

Input: 20
Output: 7
Explanation: 2, 5 are prime divisors of 20

Approach: This problem can be solved by finding all the prime factors of the number. Follow the steps below to solve this problem:

• Initialize a variable sum as 0 to store the sum of prime divisors of N.
• If N is divisible by 2, add 2 to sum and divide N by 2 until it is divisible.
• Iterate in the range [3, sqrt(N)] using the variable i, with an increment of 2:
• If N is divisible by i, add i to sum and divide N by i until it is divisible.
• If N is a prime number greater than 2, add N to sum.
• After completing the above steps, print the sum as the answer.

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach` `#include ``using` `namespace` `std;` `// Function to find sum of prime``// divisors of the given number N``int` `SumOfPrimeDivisors(``int` `n)``{` `    ``int` `sum = 0;` `    ``// Add the number 2 if it divides N``    ``if` `(n % 2 == 0) {``        ``sum = sum + 2;``    ``}` `    ``while` `(n % 2 == 0) {``        ``n = n / 2;``    ``}` `    ``// Traverse the loop from [3, sqrt(N)]``    ``for` `(``int` `i = 3; i <= ``sqrt``(n); i = i + 2) {` `        ``// If i divides N, add i and divide N``        ``if` `(n % i == 0) {``            ``sum = sum + i;``        ``}` `        ``while` `(n % i == 0) {``            ``n = n / i;``        ``}``    ``}` `    ``// This condition is to handle the case when N``    ``// is a prime number greater than 2``    ``if` `(n > 2) {``        ``sum = sum + n;``    ``}` `    ``return` `sum;``}` `// Driver code``int` `main()``{``    ``// Given Input``    ``int` `n = 10;` `    ``// Function Call``    ``cout << SumOfPrimeDivisors(n);``    ``return` `0;``}`

## Java

 `// Java program for the above approach` `import` `java.io.*;` `class` `GFG {``  ``// Function to find sum of prime``  ``// divisors of the given number N``  ``public` `static` `int` `SumOfPrimeDivisors(``int` `n)``  ``{` `    ``int` `sum = ``0``;` `    ``// Add the number 2 if it divides N``    ``if` `(n % ``2` `== ``0``) {``      ``sum = sum + ``2``;``    ``}` `    ``while` `(n % ``2` `== ``0``) {``      ``n = n / ``2``;``    ``}` `    ``// Traverse the loop from [3, sqrt(N)]``    ``for` `(``int` `i = ``3``; i <= Math.sqrt(n); i = i + ``2``) {` `      ``// If i divides N, add i and divide N``      ``if` `(n % i == ``0``) {``        ``sum = sum + i;``      ``}` `      ``while` `(n % i == ``0``) {``        ``n = n / i;``      ``}``    ``}` `    ``// This condition is to handle the case when N``    ``// is a prime number greater than 2``    ``if` `(n > ``2``) {``      ``sum = sum + n;``    ``}` `    ``return` `sum;``  ``}` `  ``// Driver code``  ``public` `static` `void` `main (String[] args)``  ``{` `    ``// Given Input``    ``int` `n = ``10``;` `    ``// Function Call``    ``System.out.println(SumOfPrimeDivisors(n));``  ``}``}` `// This code is contributed by Potta Lokesh`

## Python3

 `# Python3 program for the above approach``import` `math` `# Function to find sum of prime``# divisors of the given number N``def` `SumOfPrimeDivisors(n):``    ` `    ``sum` `=` `0``    ` `    ``# Add the number 2 if it divides N``    ``if` `n ``%` `2` `=``=` `0``:``        ``sum` `+``=` `2``        ` `    ``while` `n ``%` `2` `=``=` `0``:``        ``n ``/``/``=` `2``        ` `    ``# Traverse the loop from [3, sqrt(N)]``    ``k ``=` `int``(math.sqrt(n))``    ` `    ``for` `i ``in` `range``(``3``, k ``+` `1``, ``2``):``        ` `        ``# If i divides N, add i and divide N``        ``if` `n ``%` `i ``=``=` `0``:``            ``sum` `+``=` `i``            ` `        ``while` `n ``%` `i ``=``=` `0``:``            ``n ``/``/``=` `i``            ` `    ``# This condition is to handle the case when N``    ``# is a prime number greater than 2``    ``if` `n > ``2``:``        ``sum` `+``=` `n``        ` `    ``# Return the sum``    ``return` `sum` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ` `    ``# Given input``    ``n ``=` `10``    ` `    ``# Function call``    ``print``(SumOfPrimeDivisors(n))``    ` `# This code is contributed by MuskanKalra1`

## C#

 `// C# program for the above approach` `using` `System;` `class` `GFG {``  ``// Function to find sum of prime``  ``// divisors of the given number N``  ``public` `static` `int` `SumOfPrimeDivisors(``int` `n)``  ``{` `    ``int` `sum = 0;` `    ``// Add the number 2 if it divides N``    ``if` `(n % 2 == 0) {``      ``sum = sum + 2;``    ``}` `    ``while` `(n % 2 == 0) {``      ``n = n / 2;``    ``}` `    ``// Traverse the loop from [3, sqrt(N)]``    ``for` `(``int` `i = 3; i <= Math.Sqrt(n); i = i + 2) {` `      ``// If i divides N, add i and divide N``      ``if` `(n % i == 0) {``        ``sum = sum + i;``      ``}` `      ``while` `(n % i == 0) {``        ``n = n / i;``      ``}``    ``}` `    ``// This condition is to handle the case when N``    ``// is a prime number greater than 2``    ``if` `(n > 2) {``      ``sum = sum + n;``    ``}` `    ``return` `sum;``  ``}` `  ``// Driver code``  ``public` `static` `void` `Main (String[] args)``  ``{` `    ``// Given Input``    ``int` `n = 10;` `    ``// Function Call``    ``Console.Write(SumOfPrimeDivisors(n));``  ``}``}` `// This code is contributed by shivanisinghss2110`

## Javascript

 ``

Output

`7`

Time complexity: O(sqrt(N))
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up