# 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
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Prerequisite : Sum of all the factors of a number

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 = (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 CPP program  ` `// to find sum of all  ` `// divisors of n. ` `#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; ` `} `

## 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 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". `

## 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(String[] argc) ` `    ``{ ` `        ``int` `n = 30; ` `        ``Console.Write(sumofoddFactors(n)); ` `    ``} ` `} ` ` `  `/* This code is contributed by parashar...*/`

## PHP

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

Output :

```24
```

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : parashar, nitin mittal

Article Tags :

1

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