Sum of the series 1, 3, 6, 10… (Triangular Numbers)
Given n, no of elements in the series, find the summation of the series 1, 3, 6, 10….n. The series mainly represents triangular numbers.
Examples:
Input: 2
Output: 4
Explanation: 1 + 3 = 4
Input: 4
Output: 20
Explanation: 1 + 3 + 6 + 10 = 20
A simple solution is to one by one add triangular numbers.
C++
#include <iostream>
using namespace std;
int seriesSum( int n)
{
int sum = 0;
for ( int i=1; i<=n; i++)
sum += i*(i+1)/2;
return sum;
}
int main()
{
int n = 4;
cout << seriesSum(n);
return 0;
}
|
Java
import java.io.*;
class GFG {
static int seriesSum( int n)
{
int sum = 0 ;
for ( int i = 1 ; i <= n; i++)
sum += i * (i + 1 ) / 2 ;
return sum;
}
public static void main (String[] args)
{
int n = 4 ;
System.out.println(seriesSum(n));
}
}
|
Python3
def seriessum(n):
sum = 0
for i in range ( 1 , n + 1 ):
sum + = i * (i + 1 ) / 2
return sum
n = 4
print (seriessum(n))
|
C#
using System;
class GFG {
static int seriesSum( int n)
{
int sum = 0;
for ( int i = 1; i <= n; i++)
sum += i * (i + 1) / 2;
return sum;
}
public static void Main()
{
int n = 4;
Console.WriteLine(seriesSum(n));
}
}
|
PHP
<?php
function seriesSum( $n )
{
$sum = 0;
for ( $i = 1; $i <= $n ; $i ++)
$sum += $i * ( $i + 1) / 2;
return $sum ;
}
$n = 4;
echo (seriesSum( $n ));
?>
|
Javascript
<script>
function seriesSum(n)
{
let sum = 0;
for (let i = 1; i <= n; i++)
sum += i * ((i + 1) / 2);
return sum;
}
let n = 4;
document.write(seriesSum(n)) ;
</script>
|
Output:
20
Time complexity : O(n)
Auxiliary Space: O(1) since using constant variables
An efficient solution is to use direct formula n(n+1)(n+2)/6
Let g(i) be i-th triangular number.
g(1) = 1
g(2) = 3
g(3) = 6
g(n) = n(n+1)/2
Let f(n) be the sum of the triangular
numbers 1 through n.
f(n) = g(1) + g(2) + ... + g(n)
Then:
f(n) = n(n+1)(n+2)/6
How can we prove this? We can prove it by induction. That is, prove two things :
- It’s true for some n (n = 1, in this case).
- If it’s true for n, then it’s true for n+1.
This allows us to conclude that it’s true for all n >= 1.
Now 1) is easy. We know that f(1) = g(1)
= 1. So it's true for n = 1.
Now for 2). Suppose it's true for n.
Consider f(n+1). We have:
f(n+1) = g(1) + g(2) + ... + g(n) + g(n+1)
= f(n) + g(n+1)
Using our assumption f(n) = n(n+1)(n+2)/6
and g(n+1) = (n+1)(n+2)/2, we have:
f(n+1) = n(n+1)(n+2)/6 + (n+1)(n+2)/2
= n(n+1)(n+2)/6 + 3(n+1)(n+2)/6
= (n+1)(n+2)(n+3)/6
Therefore, f(n) = n(n+1)(n+2)/6
Below is the implementation of the above approach:
C++
#include <iostream>
using namespace std;
int seriesSum( int n)
{
return (n * (n + 1) * (n + 2)) / 6;
}
int main()
{
int n = 4;
cout << seriesSum(n);
return 0;
}
|
Java
import java.io.*;
class GFG
{
static int seriesSum( int n)
{
return (n * (n + 1 ) * (n + 2 )) / 6 ;
}
public static void main (String[] args) {
int n = 4 ;
System.out.println( seriesSum(n));
}
}
|
Python3
def seriesSum(n):
return int ((n * (n + 1 ) * (n + 2 )) / 6 )
n = 4
print (seriesSum(n))
|
C#
using System;
class GFG {
static int seriesSum( int n)
{
return (n * (n + 1) * (n + 2)) / 6;
}
public static void Main()
{
int n = 4;
Console.WriteLine(seriesSum(n));
}
}
|
PHP
<?php
function seriesSum( $n )
{
return ( $n * ( $n + 1) *
( $n + 2)) / 6;
}
$n = 4;
echo (seriesSum( $n ));
?>
|
Javascript
<script>
function seriesSum( n)
{
return (n * (n + 1) * (n + 2)) / 6;
}
let n = 4;
document.write(seriesSum(n));
</script>
|
Output:
20
Time complexity : O(1)
Auxiliary Space: O(1), since no extra space has been taken.
Last Updated :
16 Aug, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...