# Summation of floor of harmonic progression

• Last Updated : 28 Mar, 2022

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 complexity 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 summation of# the given harmonic seriesdef getSum(n):     # To store the summation    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

Time Complexity: O(sqrt(n))

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up