Python Program for Sum of squares of first n natural numbers

03 Dec, 2018
Given a positive integer N. The task is to find 12 + 22 + 32 + ..... + N2.
Examples:
Input : N = 4
Output : 30
12 + 22 + 32 + 42
= 1 + 4 + 9 + 16
= 30

Input : N = 5
Output : 55

Method 1: O(N) The idea is to run a loop from 1 to n and for each i, 1 <= i <= n, find i2 to sum.
# Python3 Program to# find sum of square# of first n natural # numbers    # Return the sum of# square of first n# natural numbersdef 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 Programn = 4print(squaresum(n))  # This code is contributed by Nikita Tiwari.*/
Output:
30

Method 2: O(1)
Proof:
We know,
(k + 1)3 = k3 + 3 * k2 + 3 * k + 1
We can write the above identity for k from 1 to n:
23 = 13 + 3 * 12 + 3 * 1 + 1 ......... (1)
33 = 23 + 3 * 22 + 3 * 2 + 1 ......... (2)
43 = 33 + 3 * 32 + 3 * 3 + 1 ......... (3)
53 = 43 + 3 * 42 + 3 * 4 + 1 ......... (4)
...
n3 = (n - 1)3 + 3 * (n - 1)2 + 3 * (n - 1) + 1 ......... (n - 1)
(n + 1)3 = n3 + 3 * n2 + 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 * n2 + 3 * n + 1
         = (n - 1)3 + 3 * (n2 + (n - 1)2) + 3 * ( n + (n - 1) ) + 1 + 1

By putting all equation, we get
(n + 1)3 = 13 + 3 * Σ k2 + 3 * Σ k + Σ 1
n3 + 3 * n2 + 3 * n + 1 = 1 + 3 * Σ k2 + 3 * (n * (n + 1))/2 + n
n3 + 3 * n2 + 3 * n = 3 * Σ k2 + 3 * (n * (n + 1))/2 + n
n3 + 3 * n2 + 2 * n - 3 * (n * (n + 1))/2 = 3 * Σ k2
n * (n2 + 3 * n + 2) - 3 * (n * (n + 1))/2 = 3 * Σ k2
n * (n + 1) * (n + 2) - 3 * (n * (n + 1))/2 = 3 * Σ k2
n * (n + 1) * (n + 2 - 3/2) = 3 * Σ k2
n * (n + 1) * (2 * n + 1)/2  = 3 * Σ k2
n * (n + 1) * (2 * n + 1)/6  = Σ k2

# Python3 Program to# find sum of square # of first n natural # numbers  # Return the sum of # square of first n# natural numbersdef squaresum(n) :    return (n * (n + 1) * (2 * n + 1)) // 6  # Driven Programn = 4print(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 = 4print(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!
Python Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python program to add two numbers
Python Program for factorial of a number
Python program to find second largest number in a list
Iterate over characters of a string in Python
Python | Convert set into a list
Appending to list in Python dictionary
Python | Convert a list into a tuple
Add a key:value pair to dictionary in Python
Python Program for Bubble Sort
Python | Check if a variable is string