Sum of Cubes of First n Natural Numbers (original) (raw)

Last Updated : 7 Apr, 2026

Given an integer **n, Find the sum of series **1 3 + 2 3 + 3 3 + 4 3 + ... + n 3 till n-th term.

**Examples:

**Input: n = 5
**Output: 225
**Explanation: 13 + 23 + 33 + 43 + 53 = 225

**Input: n = 7
**Output: 784
**Explanation: 13 + 23 + 33 + 43 + 53 + 63 + 73 = 784

Try It Yourselfredirect icon

Table of Content

[Naive Approach] Iterative Method - O(n) Time and O(1) Space

Iterate from 1 to n and keep adding the cube of each number to a running sum. Finally, return the accumulated sum.

Dry run for n=5:

Final result = 225

C++ `

#include using namespace std;

int sumOfSeries(int n) { int sum = 0; for (int i = 1; i <= n; i++) sum += i * i * i; return sum; }

int main() { int n = 5; cout << sumOfSeries(n); return 0; }

Java

import java.util.; import java.lang.; class GFG {

public static int sumOfSeries(int n)
{
    int sum = 0;
    for (int i = 1; i <= n; i++)
        sum += i * i * i;
    return sum;
}

public static void main(String[] args)
{
    int n = 5;
    System.out.println(sumOfSeries(n));
}

}

Python

def sumOfSeries(n): sum = 0 for i in range(1, n + 1): sum += i * i*i

return sum

if name == "main": n = 5 print(sumOfSeries(n))

C#

using System;

class GFG {

static int sumOfSeries(int n)
{
    int sum = 0;
    for (int i = 1; i <= n; i++)
        sum += i * i * i;
    return sum;
}

public static void Main()
{
    int n = 5;
    Console.Write(sumOfSeries(n));
}

}

JavaScript

function sumOfSeries( n) { let sum = 0; for (let i = 1; i <= n; i++) sum += i * i * i; return sum; }

// Driver Code let n = 5; console.log(sumOfSeries(n));

`

[Expected Approach] Formula Based Method- O(1) Time and O(1) Space

Use the direct formula ****(n(n+1)/2)^2** to compute the sum without iteration.

sum-of-cubes

For n = 5 sum by formula is
(5*(5 + 1 ) / 2)) ^ 2
= (5*6/2) ^ 2
= (15) ^ 2
= 225

For n = 7, sum by formula is
(7*(7 + 1 ) / 2)) ^ 2
= (7*8/2) ^ 2
= (28) ^ 2
= 784

**How does this formula work?

We can prove the formula using mathematical induction. We can easily see that the formula holds true for n = 1 and n = 2. Let this be true for n = k-1.

Let the formula be true for n = k-1.
Sum of first (k-1) natural numbers =
[((k - 1) * k)/2]2

Sum of first k natural numbers =
= Sum of (k-1) numbers + k3
= [((k - 1) * k)/2]2 + k3
= [k2(k2 - 2k + 1) + 4k3]/4
= [k4 + 2k3 + k2]/4
= k2(k2 + 2k + 1)/4
= [k*(k+1)/2]2

C++ `

#include using namespace std;

int sumOfSeries(int n) { int x = (n * (n + 1) / 2); return x * x; }

int main() { int n = 5; cout << sumOfSeries(n); return 0; }

Java

import java.util.; import java.lang.; class GFG {

public static int sumOfSeries(int n)
{
    int x = (n * (n + 1) / 2);
    return x * x;
}

public static void main(String[] args)
{
    int n = 5;
    System.out.println(sumOfSeries(n));
}

}

Python

def sumOfSeries(n): x = (n * (n + 1) / 2) return (int)(x * x)

if name == "main": n = 5 print(sumOfSeries(n))

C#

using System;

class GFG {

public static int sumOfSeries(int n)
{
    int x = (n * (n + 1) / 2);
    return x * x;
}

public static void Main()
{
    int n = 5;
    
    Console.Write(sumOfSeries(n));
}

}

JavaScript

/* Returns the sum of series */ function sumOfSeries( n) { let x = (n * (n + 1) / 2) return (x * x) }

// Driver Code let n = 5; console.log(sumOfSeries(n));

`

**Note: The expression (n*(n+1)/2)^2 may overflow before division for large n.

Rearrange the computation by performing division before multiplication to reduce intermediate values and minimize the risk of integer overflow.

C++ `

#include using namespace std;

int sumOfSeries(int n) { int x;

// Division before multiplication
if (n % 2 == 0)
    x = (n / 2) * (n + 1);
else
    x = ((n + 1) / 2) * n;
return x * x;

}

int main() { int n = 5; cout << sumOfSeries(n); return 0; }

Java

import java.util.*;

class GFG {

public static int sumOfSeries(int n)
{
    int x;
    
    // Division before multiplication
    if (n % 2 == 0)
        x = (n / 2) * (n + 1);
    else
        x = ((n + 1) / 2) * n;
    return x * x;
}

public static void main(String[] args)
{
    int n = 5;
    System.out.println(sumOfSeries(n));
}

}

Python

def sumOfSeries(n): x = 0

# Division before multiplication
if n % 2 == 0 : 
    x = (n / 2) * (n + 1)
else:
    x = ((n + 1) / 2) * n
    
return (int)(x * x)

if name == "main": n = 5 print(sumOfSeries(n))

C#

using System;

class GFG {

public static int sumOfSeries(int n)
{
    int x;
    
    // Division before multiplication
    if (n % 2 == 0)
        x = (n / 2) * (n + 1);
    else
        x = ((n + 1) / 2) * n;
    return x * x;
}

static public void Main ()
{
    int n = 5;
    Console.WriteLine(sumOfSeries(n));
}

}

JavaScript

function sumOfSeries( n) { let x=0

// Division before multiplication
if (n % 2 == 0)
    x = (n / 2) * (n + 1)
else
    x = ((n + 1) / 2) * n
    
return (x * x)

}

// Driver Code let n = 5; console.log(sumOfSeries(n));

`

**Output:

225

**Time complexity: O(1)
**Auxiliary Space: O(1)