Given a positive integer **N**, the task is to find the sum of divisors of first **N** natural numbers.

**Examples:**

Input:N = 4

Output:15

Explanation:

Sum of divisors of 1 = (1)

Sum of divisors of 2 = (1+2)

Sum of divisors of 3 = (1+3)

Sum of divisors of 4 = (1+2+4)

Hence, total sum = 1 + (1+2) + (1+3) + (1+2+4) = 15

Input:N = 5

Output:21

Explanation:

Sum of divisors of 1 = (1)

Sum of divisors of 2 = (1+2)

Sum of divisors of 3 = (1+3)

Sum of divisors of 4 = (1+2+4)

Sum of divisors of 5 = (1+5)

Hence, total sum = (1) + (1+2) + (1+3) + (1+2+4) + (1+5) = 21

For linear time approach, refer to Sum of all divisors from 1 to N

**Approach:**

To optimize the approach in the post mentioned above, we need to look for a solution with logarithmic complexity. A number **D** is added multiple times in the final answer. Let us try to observe a pattern of repetitive addition.

Considering **N** = **12**:

D | Number of times added |
---|---|

1 | 12 |

1 | 12 |

2 | 6 |

3 | 4 |

5, 6 | 2 |

7, 8, 9, 10, 11, 12 | 1 |

From the above pattern, observe that every number **D** is added (**N** / **D**) times. Also, there are multiple D that have same (N / D). Hence, we can conclude that for a given **N**, and a particular **i**, numbers from (**N** / (**i** + **1**)) + **1** to (**N** / **i**) will be added **i** times.

Illustration:

- N = 12, i = 1

(N/(i+1))+1 = 6+1 = 7 and (N/i) = 12

All numbers will be 7, 8, 9, 10, 11, 12 and will be added 1 time only.- N = 12, i = 2

(N/(i+1))+1 = 4+1 = 5 and (N/i) = 6

All numbers will be 5, 6 and will be added 2 times.

Now, assume **A** = (N / (i + 1)), **B** = (N / i)

Sum of numbers from A + 1 to B = Sum of numbers from 1 to B – Sum of numbers from 1 to A

Also, instead of just incrementing i each time by 1, find next i like this, i = N/(N/(i+1))

Below is the implementation of the above approach:

## Python3

`# Python program for ` `# the above approach ` ` ` `mod ` `=` `1000000007` ` ` `# Functions returns sum ` `# of numbers from 1 to n ` `def` `linearSum(n): ` ` ` `return` `n` `*` `(n ` `+` `1` `)` `/` `/` `2` `%` `mod ` ` ` `# Functions returns sum ` `# of numbers from a+1 to b ` `def` `rangeSum(b, a): ` ` ` `return` `(linearSum(b) ` `-` `( ` ` ` `linearSum(a))) ` `%` `mod ` ` ` `# Function returns total ` `# sum of divisors ` `def` `totalSum(n): ` ` ` ` ` `# Stores total sum ` ` ` `result ` `=` `0` ` ` `i ` `=` `1` ` ` ` ` `# Finding numbers and ` ` ` `# its occurence ` ` ` `while` `True` `: ` ` ` ` ` `# Sum of product of each ` ` ` `# number and its occurence ` ` ` `result ` `+` `=` `rangeSum( ` ` ` `n` `/` `/` `i, n` `/` `/` `(i ` `+` `1` `)) ` `*` `( ` ` ` `i ` `%` `mod) ` `%` `mod; ` ` ` ` ` `result ` `%` `=` `mod; ` ` ` `if` `i ` `=` `=` `n: ` ` ` `break` ` ` `i ` `=` `n` `/` `/` `(n` `/` `/` `(i ` `+` `1` `)) ` ` ` ` ` `return` `result ` ` ` `# Driver code ` ` ` `N` `=` `4` `print` `(totalSum(N)) ` ` ` `N` `=` `12` `print` `(totalSum(N)) ` |

*chevron_right*

*filter_none*

**Output:**

15 127

**Time complexity:** O(log N)

## Recommended Posts:

- Find sum of divisors of all the divisors of a natural number
- Find sum of inverse of the divisors when sum of divisors and the number is given
- Divisors of n-square that are not divisors of n
- Maximum possible prime divisors that can exist in numbers having exactly N divisors
- Check if count of even divisors of N is equal to count of odd divisors
- Check if a number has an odd count of odd divisors and even count of even divisors
- Sum of all prime divisors of all the numbers in range L-R
- Sum of all divisors from 1 to N | Set 3
- Sum of all proper divisors of a natural number
- Sum of all proper divisors of natural numbers in an array
- Sum of all the prime divisors of a number
- Break a number such that sum of maximum divisors of all parts is minimum
- Sum of all divisors from 1 to n
- Find largest sum of digits in all divisors of n
- Sum of product of all subsets formed by only divisors of N
- Sum of all second largest divisors after splitting a number into one or more parts
- Sum of product of proper divisors of all Numbers lying in range [L, R]
- Sum of all proper divisors from 1 to N
- Sum of all perfect square divisors of numbers from 1 to N
- Count all pairs of divisors of a number N whose sum is coprime with N

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.