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

Examples:

Input : n = 30 Output : 24 Odd dividers sum 1 + 3 + 5 + 15 = 24 Input : 18 Output : 13 Odd dividers sum 1 + 3 + 9 = 13

Let p_{1}, p_{2}, … p_{k} be prime factors of n. Let a_{1}, a_{2}, .. a_{k} be highest powers of p_{1}, p_{2}, .. p_{k} respectively that divide n, i.e., we can write n as **n = (p _{1}^{a1})*(p_{2}^{a2})* … (p_{k}^{ak})**.

Sum of divisors = (1 + p_{1}+ p_{1}^{2}... p_{1}^{a1}) * (1 + p_{2}+ p_{2}^{2}... p_{2}^{a2}) * ............................................. (1 + p_{k}+ p_{k}^{2}... p_{k}^{ak})

To find sum of odd factors, we simply need to ignore even factors and their powers. For example, consider n = 18. It can be written as 2^{1}3^{2} and sun of all factors is (1)*(1 + 2)*(1 + 3 + 3^{2}). Sum of odd factors (1)*(1+3+3^{2}) = 13.

To remove all even factors, we repeatedly divide n while it is divisible by 2. After this step, we only get odd factors. Note that 2 is the only even prime.

## Python3

`# Formula based Python3 program ` `# to find sum of all divisors ` `# of n. ` `import` `math ` ` ` `# Returns sum of all factors ` `# of n. ` `def` `sumofoddFactors( n ): ` ` ` ` ` `# Traversing through all ` ` ` `# prime factors. ` ` ` `res ` `=` `1` ` ` ` ` `# ignore even factors by ` ` ` `# of 2 ` ` ` `while` `n ` `%` `2` `=` `=` `0` `: ` ` ` `n ` `=` `n ` `/` `/` `2` ` ` ` ` `for` `i ` `in` `range` `(` `3` `, ` `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` `+` `=` `1` ` ` ` ` `n ` `=` `n ` `/` `/` `i ` ` ` `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 ` `=` `30` `print` `(sumofoddFactors(n)) ` ` ` `# This code is contributed by "Sharad_Bhardwaj". ` |

*chevron_right*

*filter_none*

Output:

24

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