# Sum of squares of first n natural numbers

• Difficulty Level : Easy
• Last Updated : 21 Aug, 2022

Given n, find sum of squares of first n natural numbers.
Examples :

```Input : n = 2
Output : 5
Explanation: 1^2+2^2 = 5

Input : n = 8
Output : 204
Explanation :
1^2 + 2^2 + 3^2 + 4^2 + 5^2 + 6^2 + 7^2 + 8^2 = 204 ```

Naive approach :
A naive approach will be to run a loop from 1 to n and sum up all the squares.

## C++

 `// CPP program to calculate``// 1^2+2^2+3^2+...``#include ``using` `namespace` `std;` `// Function to calculate sum``int` `summation(``int` `n)``{``    ``int` `sum = 0;``    ``for` `(``int` `i = 1; i <= n; i++)``        ``sum += (i * i);` `    ``return` `sum;``}` `// Driver code``int` `main()``{``    ``int` `n = 2;``    ``cout << summation(n);``    ``return` `0;``}`

## C

 `// C program to calculate``// 1^2+2^2+3^2+...``#include `` ` `// Function to calculate sum``int` `summation(``int` `n)``{``    ``int` `sum = 0;``    ``for` `(``int` `i = 1; i <= n; i++)``        ``sum += (i * i);``    ``return` `sum;``}`` ` `// Driver code``int` `main()``{``    ``int` `n = 2;``    ``printf``(``"%d"``,summation(n));``    ``return` `0;``}`

## Java

 `// Java program to calculate``// 1^2+2^2+3^2+...``import` `java.util.*;``import` `java.lang.*;` `class` `GFG``{``    ``// Function to calculate sum``    ``public` `static` `int` `summation(``int` `n)``    ``{``        ``int` `sum = ``0``;``        ``for` `(``int` `i = ``1``; i <= n; i++)``            ``sum += (i * i);` `        ``return` `sum;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `n = ``2``;``        ``System.out.println(summation(n));``    ``}``}` `// This code is contributed``// by Sachin Bisht`

## Python3

 `# Python3 program to``# calculate 1 ^ 2 + 2 ^ 2 + 3 ^ 2+..` `# Function to calculate series``def` `summation(n):``    ``return` `sum``([i``*``*``2` `for` `i ``in``               ``range``(``1``, n ``+` `1``)])` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:``    ``n ``=` `2``    ``print``(summation(n))`

## C#

 `// C# program to calculate``// 1^2+2^2+3^2+...``using` `System;``class` `GFG``{` `    ``// Function to calculate sum``    ``public` `static` `int` `summation(``int` `n)``    ``{``        ``int` `sum = 0;``        ``for` `(``int` `i = 1; i <= n; i++)``            ``sum += (i * i);` `        ``return` `sum;``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `n = 2;` `        ``Console.WriteLine(summation(n));``    ``}``}` `// This code is contributed by vt_m`

## PHP

 ``

## Javascript

 ``

Output

`5`

Time Complexity: O(n)
Auxiliary Space: O(1), since no extra space has been taken.

Efficient Approach :
There exists a formula for finding the sum of squares of first n numbers.
1 + 2 + ……….. + n = n(n+1) / 2
12 + 22 + ……… + n2 = n(n+1)(2n+1) / 6

```n * (n + 1) * (2*n + 1) / 6

Example : n = 3
= 3 * (3 + 1) * (2*3 + 1) / 6
= (3 * 4 * 7) / 6
= 84 / 6
= 14```

How does this work?

```We can prove this formula using induction.
We can easily see that the formula is true for
n = 1 and n = 2 as sums are 1 and 5 respectively.

Let it be true for n = k-1. So sum of k-1 numbers
is (k - 1) * k * (2 * k - 1)) / 6

In the following steps, we show that it is true
for k assuming that it is true for k-1.

Sum of k numbers = Sum of k-1 numbers + k2
= (k - 1) * k * (2 * k - 1) / 6 + k2
= ((k2 - k) * (2*k - 1) + 6k2)/6
= (2k3 - 2k2 - k2 + k + 6k2)/6
= (2k3 + 3k2 + k)/6
= k * (k + 1) * (2*k + 1) / 6```

## C++

 `// C++ program to get the sum``// of the following series``#include ``using` `namespace` `std;` `// Function calculating``// the series``int` `summation(``int` `n)``{``    ``return` `(n * (n + 1) *``        ``(2 * n + 1)) / 6;``}` `// Driver Code``int` `main()``{``    ``int` `n = 10;``    ``cout << summation(n) << endl;``    ``return` `0;``}` `// This code is contributed by shubhamsingh10`

## C

 `// C program to get the sum``// of the following series``#include ` `// Function calculating``// the series``int` `summation(``int` `n)``{``    ``return` `(n * (n + 1) *``           ``(2 * n + 1)) / 6;``}` `// Driver Code``int` `main()``{``    ``int` `n = 10;``    ``printf``(``"%d"``, summation(n));``    ``return` `0;``}`

## Java

 `// Java program to get``// the sum of the series``import` `java.util.*;``import` `java.lang.*;` `class` `GFG``{``    ``// Function calculating``    ``// the series``    ``public` `static` `int` `summation(``int` `n)``    ``{``        ``return` `(n * (n + ``1``) *``               ``(``2` `* n + ``1``)) / ``6``;``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `n = ``10``;``        ``System.out.println(summation(n));``    ``}``}` `// This code is contributed``// by Sachin Bisht`

## Python3

 `# Python code to find sum of``# squares of first n natural numbers.``def` `summation(n):``    ``return` `(n ``*` `(n ``+` `1``) ``*``           ``(``2` `*` `n ``+` `1``)) ``/` `6``    ` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:``    ``n ``=` `10``    ``print``(summation(n))`

## C#

 `// C# program to get the sum``// of the series``using` `System;` `class` `GFG``{` `    ``// Function calculating``    ``// the series``    ``public` `static` `int` `summation(``int` `n)``    ``{``        ``return` `(n * (n + 1) *``               ``(2 * n + 1)) / 6;``    ``}` `    ``// Driver Code``    ``public` `static` `void` `Main()``    ``{``        ``int` `n = 10;` `        ``Console.WriteLine(summation(n));``    ``}``}` `// This code is contributed by vt_m`

## PHP

 ``

## Javascript

 `

`      ``

Output

```385
```

Time Complexity: O(1)
Auxiliary Space: O(1)

Avoiding the overflow:
In the above method, sometimes due to large value of n, the value of (n * (n + 1) * (2 * n + 1)) would overflow. We can avoid this overflow up to some extent using the fact that n*(n+1) must be divisible by 2.

Below is the code for the above approach.

## C++

 `// C++ program to get the sum``// of the following series``#include ``using` `namespace` `std;` `// Function calculating``// the series``int` `summation(``int` `n)``{``    ``return` `(n * (n + 1) / 2) * (2 * n + 1) / 3;``}` `// Driver Code``int` `main()``{``    ``int` `n = 10;``    ``cout << summation(n) << endl;``    ``return` `0;``}` `// This code is contributed by Pushpesh Raj`

Output

```385
```

Time complexity: O(1)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up