# Python Program for 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 :30Output :48 Even dividers sum 2 + 6 + 10 + 30 = 48Input :18Output :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 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.` |

**Output:**

26

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