Related Articles

# N-th polite number

• Difficulty Level : Easy
• Last Updated : 16 Apr, 2021

A polite number is a positive integer that can be written as the sum of two or more consecutive positive integers. Given N, find the N-th polite number.
Examples:

Input : 4
Output : 7
Explanation: The first 3 are 3(1+2), 5(2+3),
6(1+2+3).

Input : 7
Output : 11
Explanation:  3, 5, 6, 7, 9, 10, 11.

There exist an interesting pattern that only powers of 2 are not present in series of Polite numbers. Based on this fact, there exist below formula (Lambek–Moser theorem) for N-th polite number. Here to find Nth polite number we have to take n as n+1 in the above equation
The inbuilt log function computes log base-e, so dividing it by log base-e 2 will give log base-2 value.
Given below is the implementation of the above approach:

## C++

 // CPP program to find Nth polite number#include using namespace std; // function to evaluate Nth polite numberdouble polite(double n){    n += 1;    double base = 2;    return n + (log((n + (log(n) /                 log(base))))) / log(base);} // driver codeint main(){    double n = 7;     cout << (int)polite(n);    return 0;}

## Java

 // Java program for finding N-th polite numberimport java.io.*; class GFG {     // function to find N-th polite number    static double polite(double n)    {        n += 1;        double base = 2;        return n + (Math.log((n + (Math.log(n) /               Math.log(base))))) / Math.log(base);    }     // driver code    public static void main(String[] args)    {        double n = 7;        System.out.println((int)polite(n));    }}

## Python

 import math# function to find Nth polite numberdef Polite(n):    n = n + 1    return (int)(n+(math.log((n + math.log(n, 2)), 2))) # Driver coden = 7print Polite(n)

## C#

 // Java program for finding// N-th polite numberusing System; class GFG {     // Function to find N-th polite number    static double polite(double n)    {        n += 1;        double base1 = 2;        return n + (Math.Log((n + (Math.Log(n) /                     Math.Log(base1))))) /                     Math.Log(base1);    }     // Driver code    public static void Main(String []args)    {        double n = 7;        Console.Write((int)polite(n));    }} // This code is contributed by// Smitha Dinesh Semwal

## PHP

 

## Javascript

 

Output:

11

Reference: Wikipedia

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up