Skip to content
Related Articles
Summation of floor of harmonic progression
• Last Updated : 03 May, 2021

Given an integer N, the task is to find the summation of the harmonic series .
Examples:

Input: N = 5
Output: 10
floor(3/1) + floor(3/2) + floor(3/3) = 3 + 1 + 1 = 5
Input: N = 20
Output: 66

Naive approach: Run a loop from 1 to N and find the summation of the floor values of N / i. Time complexiy of this approach will be O(n).
Efficient approach: Use the following formula to calculate the summation of the series: Now, the loop needs to be run from 1 to sqrt(N) and the time complexity gets reduced to O(sqrt(N))
Below is the implementation of the above approach:

## C++

 // C++ implementation of the approach#include using namespace std; // Function to return the summation of// the given harmonic serieslong long int getSum(int n){     // To store the summation    long long int sum = 0;     // Floor of sqrt(n)    int k = sqrt(n);     // Summation of floor(n / i)    for (int i = 1; i <= k; i++) {        sum += floor(n / i);    }     // From the formula    sum *= 2;    sum -= pow(k, 2);     return sum;} // Driver codeint main(){    int n = 5;     cout << getSum(n);     return 0;}

## Java

 // Java implementation of the approachclass GFG{         // Function to return the summation of    // the given harmonic series    static long getSum(int n)    {             // To store the summation        long sum = 0;             // Floor of sqrt(n)        int k = (int)Math.sqrt(n);             // Summation of floor(n / i)        for (int i = 1; i <= k; i++)        {            sum += Math.floor(n / i);        }             // From the formula        sum *= 2;        sum -= Math.pow(k, 2);             return sum;    }         // Driver code    public static void main (String[] args)    {        int n = 5;             System.out.println(getSum(n));    }} // This code is contributed by AnkitRai01

## Python3

 # Python3 implementation of the approachfrom math import floor, sqrt, ceil # Function to return the summmation of# the given harmonic seriesdef getSum(n):     # To store the summmation    summ = 0     # Floor of sqrt(n)    k =(n)**(.5)     # Summation of floor(n / i)    for i in range(1, floor(k) + 1):        summ += floor(n / i)     # From the formula    summ *= 2    summ -= pow(floor(k), 2)     return summ # Driver coden = 5 print(getSum(n)) # This code is contributed by Mohit Kumar

## C#

 // C# implementation of the approachusing System;     class GFG{         // Function to return the summation of    // the given harmonic series    static double getSum(int n)    {             // To store the summation        double sum = 0;             // Floor of sqrt(n)        int k = (int)Math.Sqrt(n);             // Summation of floor(n / i)        for (int i = 1; i <= k; i++)        {            sum += Math.Floor((double)n / i);        }             // From the formula        sum *= 2;        sum -= Math.Pow(k, 2);             return sum;    }         // Driver code    public static void Main (String[] args)    {        int n = 5;             Console.WriteLine(getSum(n));    }}     // This code is contributed by PrinciRaj1992

## Javascript

 
Output:
10

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live

My Personal Notes arrow_drop_up