# 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

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

Prerequisite : Sum of factors

As discussed in above mentioned previous post, sum of factors of a number is

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.

Below is the implementation of the above approach.

## C++

`// Formula based CPP program to find sum of all` `// divisors of n.` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Returns sum of all factors of n.` `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 <= ` `sqrt` `(n); i++) {` ` ` `// While i divides n, print i and divide n` ` ` `int` `count = 0, curr_sum = 1, curr_term = 1;` ` ` `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 code` `int` `main()` `{` ` ` `int` `n = 18;` ` ` `cout << sumofFactors(n);` ` ` `return` `0;` `}` |

## Java

`// 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 */` |

## Python3

`# Formula based Python3` `# program to find sum` `# of alldivisors of n.` `import` `math` `# Returns sum of all` `# factors of n.` `def` `sumofFactors(n) :` ` ` ` ` `# If n is odd, then` ` ` `# there are no even` ` ` `# factors.` ` ` `if` `(n ` `%` `2` `!` `=` `0` `) :` ` ` `return` `0` ` ` ` ` `# Traversing through` ` ` `# all prime factors.` ` ` `res ` `=` `1` ` ` `for` `i ` `in` `range` `(` `2` `, (` `int` `)(math.sqrt(n)) ` `+` `1` `) :` ` ` ` ` `# While i divides n` ` ` `# print i and divide n` ` ` `count ` `=` `0` ` ` `curr_sum ` `=` `1` ` ` `curr_term ` `=` `1` ` ` `while` `(n ` `%` `i ` `=` `=` `0` `) :` ` ` `count` `=` `count ` `+` `1` ` ` ` ` `n ` `=` `n ` `/` `/` `i` ` ` ` ` `# here we remove the` ` ` `# 2^0 that is 1. All` ` ` `# other factors` ` ` `if` `(i ` `=` `=` `2` `and` `count ` `=` `=` `1` `) :` ` ` `curr_sum ` `=` `0` ` ` ` ` `curr_term ` `=` `curr_term ` `*` `i` ` ` `curr_sum ` `=` `curr_sum ` `+` `curr_term` ` ` ` ` `res ` `=` `res ` `*` `curr_sum` ` ` ` ` ` ` `# This condition is to` ` ` `# handle the case when` ` ` `# n is a prime number.` ` ` `if` `(n >` `=` `2` `) :` ` ` `res ` `=` `res ` `*` `(` `1` `+` `n)` ` ` ` ` `return` `res` `# Driver code` `n ` `=` `18` `print` `(sumofFactors(n))` `# This code is contributed by Nikita Tiwari.` |

## C#

`// Formula based C# program to` `// find sum of all divisors of n.` `using` `System;` `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 Code` ` ` `public` `static` `void` `Main() {` ` ` `int` `n = 18;` ` ` `Console.WriteLine(sumofFactors(n));` ` ` `}` ` ` `}` `// This code is contributed by vt_m` |

## PHP

`<?php` `// Formula based php program to find sum` `// of all divisors of n.` `// Returns sum of all factors of n.` `function` `sumofFactors(` `$n` `)` `{` ` ` ` ` `// If n is odd, then there are no` ` ` `// even factors.` ` ` `if` `(` `$n` `% 2 != 0)` ` ` `return` `0;` ` ` `// Traversing through all prime factors.` ` ` `$res` `= 1;` ` ` `for` `(` `$i` `= 2; ` `$i` `<= sqrt(` `$n` `); ` `$i` `++) {` ` ` `// While i divides n, print i` ` ` `// and divide n` ` ` `$count` `= 0;` ` ` `$curr_sum` `= 1;` ` ` `$curr_term` `= 1;` ` ` `while` `(` `$n` `% ` `$i` `== 0) {` ` ` `$count` `++;` ` ` `$n` `= ` `floor` `(` `$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 code` ` ` `$n` `= 18;` ` ` `echo` `sumofFactors(` `$n` `);` `// This code is contributed by mits` `?>` |

## Javascript

`<script>` `// javascript program to ` `// find sum of all divisors of n.` ` ` `// Returns sum of all factors of n.` ` ` `function` `sumofFactors(n)` ` ` `{` ` ` `// If n is odd, then there` ` ` `// are no even factors.` ` ` `if` `(n % 2 != 0)` ` ` `return` `0;` ` ` ` ` `// Traversing through all prime` ` ` `// factors.` ` ` `let res = 1;` ` ` `for` `(let i = 2; i <= Math.sqrt(n); i++)` ` ` `{` ` ` `let count = 0, curr_sum = 1;` ` ` `let 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` ` ` `let n = 18;` ` ` `document.write(sumofFactors(n));` ` ` ` ` `// This code is contributed by susmitakundugoaldanga.` `</script>` |

Output:

26