Python Program for Sum of squares of first n natural numbers

Given a positive integer **N**. The task is to find 1^{2} + 2^{2} + 3^{2} + ….. + N^{2}.

**Examples:**

Input :N = 4Output :30 1^{2}+ 2^{2}+ 3^{2}+ 4^{2}= 1 + 4 + 9 + 16 = 30Input :N = 5Output :55

**Method 1: O(N)** The idea is to run a loop from 1 to n and for each i, 1 <= i <= n, find i^{2} to sum.

`# Python3 Program to ` `# find sum of square ` `# of first n natural ` `# numbers ` ` ` ` ` `# Return the sum of ` `# square of first n ` `# natural numbers ` `def` `squaresum(n) : ` ` ` ` ` `# Iterate i from 1 ` ` ` `# and n finding ` ` ` `# square of i and ` ` ` `# add to sum. ` ` ` `sm ` `=` `0` ` ` `for` `i ` `in` `range` `(` `1` `, n` `+` `1` `) : ` ` ` `sm ` `=` `sm ` `+` `(i ` `*` `i) ` ` ` ` ` `return` `sm ` ` ` `# Driven Program ` `n ` `=` `4` `print` `(squaresum(n)) ` ` ` `# This code is contributed by Nikita Tiwari.*/ ` |

**Output:**

30

**Method 2: O(1)**

Proof:

We know, (k + 1)^{3}= k^{3}+ 3 * k^{2}+ 3 * k + 1 We can write the above identity for k from 1 to n: 2^{3}= 1^{3}+ 3 * 1^{2}+ 3 * 1 + 1 ......... (1) 3^{3}= 2^{3}+ 3 * 2^{2}+ 3 * 2 + 1 ......... (2) 4^{3}= 3^{3}+ 3 * 3^{2}+ 3 * 3 + 1 ......... (3) 5^{3}= 4^{3}+ 3 * 4^{2}+ 3 * 4 + 1 ......... (4) ... n^{3}= (n - 1)^{3}+ 3 * (n - 1)^{2}+ 3 * (n - 1) + 1 ......... (n - 1) (n + 1)^{3}= n^{3}+ 3 * n^{2}+ 3 * n + 1 ......... (n) Putting equation (n - 1) in equation n, (n + 1)^{3}= (n - 1)^{3}+ 3 * (n - 1)^{2}+ 3 * (n - 1) + 1 + 3 * n^{2}+ 3 * n + 1 = (n - 1)^{3}+ 3 * (n^{2}+ (n - 1)^{2}) + 3 * ( n + (n - 1) ) + 1 + 1 By putting all equation, we get (n + 1)^{3}= 1^{3}+ 3 * Σ k^{2}+ 3 * Σ k + Σ 1 n^{3}+ 3 * n^{2}+ 3 * n + 1 = 1 + 3 * Σ k^{2}+ 3 * (n * (n + 1))/2 + n n^{3}+ 3 * n^{2}+ 3 * n = 3 * Σ k^{2}+ 3 * (n * (n + 1))/2 + n n^{3}+ 3 * n^{2}+ 2 * n - 3 * (n * (n + 1))/2 = 3 * Σ k^{2}n * (n^{2}+ 3 * n + 2) - 3 * (n * (n + 1))/2 = 3 * Σ k^{2}n * (n + 1) * (n + 2) - 3 * (n * (n + 1))/2 = 3 * Σ k^{2}n * (n + 1) * (n + 2 - 3/2) = 3 * Σ k^{2}n * (n + 1) * (2 * n + 1)/2 = 3 * Σ k^{2}n * (n + 1) * (2 * n + 1)/6 = Σ k^{2}

`# Python3 Program to ` `# find sum of square ` `# of first n natural ` `# numbers ` ` ` `# Return the sum of ` `# square of first n ` `# natural numbers ` `def` `squaresum(n) : ` ` ` `return` `(n ` `*` `(n ` `+` `1` `) ` `*` `(` `2` `*` `n ` `+` `1` `)) ` `/` `/` `6` ` ` `# Driven Program ` `n ` `=` `4` `print` `(squaresum(n)) ` ` ` `#This code is contributed by Nikita Tiwari. ` |

**Output:**

30

**Avoiding early overflow:**

For large n, the value of (n * (n + 1) * (2 * n + 1)) would overflow. We can avoid overflow up to some extent using the fact that n*(n+1) must be divisible by 2.

`# Python Program to find sum of square of first ` `# n natural numbers. This program avoids ` `# overflow upto some extent for large value ` `# of n.y ` ` ` `def` `squaresum(n): ` ` ` `return` `(n ` `*` `(n ` `+` `1` `) ` `/` `2` `) ` `*` `(` `2` `*` `n ` `+` `1` `) ` `/` `3` ` ` `# main() ` `n ` `=` `4` `print` `(squaresum(n)); ` ` ` `# Code Contributed by Mohit Gupta_OMG <(0_o)> ` |

**Output:**

30

Please refer complete article on Sum of squares of first n natural numbers for more details!