# Program for Find sum of odd factors of a number

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 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 = (p1a1)*(p2a2)* … (pkak).

```Sum of divisors = (1 + p1 + p12 ... p1a1) *
(1 + p2 + p22 ... p2a2) *
.............................................
(1 + pk + pk2 ... pkak) ```

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 2132 and sun of all factors is (1)*(1 + 2)*(1 + 3 + 32). Sum of odd factors (1)*(1+3+32) = 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.

## C++

 `// Formula based Java program  ` `// to find sum of all divisors ` `// of n. ` `#include ` `#include ` `using` `namespace` `std; ` ` `  `// Returns sum of all ` `// factors of n. ` `int` `sumofoddFactors(``int` `n) ` `{ ` `    ``// Traversing through  ` `    ``// all prime factors. ` `    ``int` `res = 1; ` ` `  `    ``// ignore even factors by ` `    ``// removing all powers ` `    ``// of 2 ` `    ``while` `(n % 2 == 0) ` `        ``n = n / 2; ` ` `  `    ``for` `(``int` `i = 3;  ` `             ``i <= ``sqrt``(n); i++) ` `    ``{ ` ` `  `        ``// While i divides n,  ` `        ``// print i and divide n ` `        ``int` `count = 0, curr_sum = 1; ` `        ``int` `curr_term = 1; ` `        ``while` `(n % i == 0) ` `        ``{ ` `            ``count++;  ` `            ``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 ` `int` `main() ` `{ ` `    ``int` `n = 30; ` `    ``cout << sumofoddFactors(n); ` `    ``return` `0; ` `} ` `// This code is contributed by  ` `// Manish Shaw(manishshaw1) `

## Java

 `// Formula based Java program  ` `// to find sum of all divisors ` `// of n. ` `import` `java.io.*; ` `import` `java.math.*; ` ` `  `class` `GFG { ` `     `  `    ``// Returns sum of all ` `    ``// factors of n. ` `    ``static` `int` `sumofoddFactors(``int` `n) ` `    ``{ ` `        ``// Traversing through  ` `        ``// all prime factors. ` `        ``int` `res = ``1``; ` `     `  `        ``// ignore even factors by ` `        ``// removing all powers ` `        ``// of 2 ` `        ``while` `(n % ``2` `== ``0``) ` `            ``n = n / ``2``; ` `     `  `        ``for` `(``int` `i = ``3``; i <= Math.sqrt(n); i++) ` `        ``{ ` `     `  `            ``// While i divides n, print i  ` `            ``// and divide n ` `            ``int` `count = ``0``, curr_sum = ``1``; ` `            ``int` `curr_term = ``1``; ` `            ``while` `(n % i == ``0``) ` `            ``{ ` `                ``count++; ` `     `  `                ``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 ` `    ``public` `static` `void` `main(String args[]) ` `                        ``throws` `IOException ` `    ``{ ` `        ``int` `n = ``30``; ` `        ``System.out.println(sumofoddFactors(n)); ` `    ``} ` `} ` ` `  `/* This code is contributed by Nikita Tiwari.*/`

## Python3

 `# Formula based Python 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 ` `    ``# removing all powers ` `    ``# of 2 ` `    ``while` `(n ``%` `2` `=``=` `0``) : ` `        ``n ``=` `int``(n ``/` `2``) ` ` `  `    ``for` `i ``in` `range``(``3``, ``int``(math.sqrt(n)) ``+` `1``) : ` `         `  `        ``# While i divides n,  ` `        ``# pri and divide n ` `        ``count ``=` `0` `        ``curr_sum ``=` `1` `        ``curr_term ``=` `1` `        ``while` `(n ``%` `i ``=``=` `0``) : ` `         `  `            ``count ``=` `count ``+` `1` `            ``n ``=` `int``(n ``/` `i)  ` `            ``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 ``=` `30` `print` `(sumofoddFactors(n)) ` ` `  `# This code is contributed by  ` `# Manish Shaw(manishshaw1) `

## C#

 `// Formula based C# program to find sum  ` `// of all divisors of n. ` `using` `System; ` ` `  `class` `GFG { ` `     `  `    ``// Returns sum of all factors of n. ` `    ``static` `int` `sumofoddFactors(``int` `n) ` `    ``{ ` `         `  `        ``// Traversing through  ` `        ``// all prime factors. ` `        ``int` `res = 1; ` `     `  `        ``// ignore even factors by ` `        ``// removing all powers ` `        ``// of 2 ` `        ``while` `(n % 2 == 0) ` `            ``n = n / 2; ` `     `  `        ``for` `(``int` `i = 3; i <= Math.Sqrt(n); i++) ` `        ``{ ` `     `  `            ``// While i divides n, print i  ` `            ``// and divide n ` `            ``int` `count = 0, curr_sum = 1; ` `            ``int` `curr_term = 1; ` `            ``while` `(n % i == 0) ` `            ``{ ` `                ``count++; ` `     `  `                ``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 ` `    ``public` `static` `void` `Main() ` `                         `  `    ``{ ` `        ``int` `n = 30; ` `         `  `        ``Console.Write(sumofoddFactors(n)); ` `    ``} ` ` `  `} ` ` `  `// This code is contributed by nitin mittal. `

## PHP

 `= 2) ` `        ``\$res` `*= (1 + ``\$n``); ` ` `  `    ``return` `\$res``; ` `} ` ` `  `// Driver code ` `\$n` `= 30; ` `echo` `(sumofoddFactors(``\$n``)); ` ` `  `// This code is contributed by  ` `// Manish Shaw(manishshaw1) ` `?> `

Output:

```24
```

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

My Personal Notes arrow_drop_up

Improved By : nitin mittal, manishshaw1

Article Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.