# Java Program to Find sum of even factors of a number

Given a number n, the task is to find the even factor sum of a number.

Examples:

Input : 30 Output : 48 Even dividers sum 2 + 6 + 10 + 30 = 48 Input : 18 Output : 26 Even dividers sum 2 + 6 + 18 = 26

Let p1, p2, … pk be prime factors of n. Let a1, a2, .. ak be highest powers of p1, p2, .. pk respectively that divide n, i.e., we can write n as **n = (p1 ^{a1})*(p2^{a2})* … (pk^{ak})**.

Sum of divisors = (1 + p1 + p1^{2}... p1^{a1}) * (1 + p2 + p2^{2}... p2^{a2}) * ........................... (1 + pk + pk^{2}... pk^{ak})

If number is odd, then there are no even factors, so we simply return 0.

If number is even, we use above formula. We only need to ignore 2^{0}. All other terms multiply to produce even factor sum. For example, consider n = 18. It can be written as 2^{1}3^{2} and sun of all factors is (2^{0} + 2^{1})*(3^{0} + 3^{1} + 3^{2}). if we remove 2^{0} then we get the

Sum of even factors (2)*(1+3+3^{2}) = 26.

To remove odd number in even factor, we ignore then 2^{0} whaich is 1. After this step, we only get even factors. Note that 2 is the only even prime.

`// Formula based Java program to` `// find sum of all divisors of n.` `import` `java.util.*;` `import` `java.lang.*;` ` ` `public` `class` `GfG {` ` ` ` ` `// Returns sum of all factors of n.` ` ` `public` `static` `int` `sumofFactors(` `int` `n)` ` ` `{` ` ` `// If n is odd, then there` ` ` `// are no even factors.` ` ` `if` `(n % ` `2` `!= ` `0` `)` ` ` `return` `0` `;` ` ` ` ` `// Traversing through all prime` ` ` `// factors.` ` ` `int` `res = ` `1` `;` ` ` `for` `(` `int` `i = ` `2` `; i <= Math.sqrt(n); i++) {` ` ` `int` `count = ` `0` `, curr_sum = ` `1` `;` ` ` `int` `curr_term = ` `1` `;` ` ` ` ` `// While i divides n, print i and` ` ` `// divide n` ` ` `while` `(n % i == ` `0` `) {` ` ` `count++;` ` ` ` ` `n = n / i;` ` ` ` ` `// here we remove the 2^0 that` ` ` `// is 1. All other factors` ` ` `if` `(i == ` `2` `&& count == ` `1` `)` ` ` `curr_sum = ` `0` `;` ` ` ` ` `curr_term *= i;` ` ` `curr_sum += curr_term;` ` ` `}` ` ` ` ` `res *= curr_sum;` ` ` `}` ` ` ` ` `// This condition is to handle the` ` ` `// case when n is a prime number.` ` ` `if` `(n >= ` `2` `)` ` ` `res *= (` `1` `+ n);` ` ` ` ` `return` `res;` ` ` `}` ` ` ` ` `// Driver function` ` ` `public` `static` `void` `main(String argc[])` ` ` `{` ` ` `int` `n = ` `18` `;` ` ` `System.out.println(sumofFactors(n));` ` ` `}` `}` ` ` `/* This code is contributed by Sagar Shukla */` |

**Output:**

26

Please refer complete article on Find sum of even factors of a number for more details!