Number of distinct integers obtained by lcm(X, N)/X

• Difficulty Level : Medium
• Last Updated : 16 Dec, 2021

Given a number N, find the number of distinct integers obtained by LCM(X, N)/X where X can be any positive number.

Examples:

Input: N = 2
Output: 2
if X is 1, then lcm(1, 2)/1 is 2/1=2.
if X is 2, then lcm(2, 2)/2 is 2/2=1.
For any X greater than 2 we cannot
obtain a distinct integer.

Input: N = 3
Output: 2

It is known that LCM(x, y) = x*y/GCD(x, y).
Therefore,

lcm(X, N) = X*N/gcd(X, N)
or, lcm(X, N)/X = N/gcd(X, N)

So only the distinct factors of can be the distinct integers possible. Hence, count the number of distinct factors of N including 1 and N itself, which is the required answer.

Below is the implementation of the above approach:

C++

 // C++ program to find distinct integers// obtained by lcm(x, num)/x#include #include  using namespace std; // Function to count the number of distinct// integers obtained by lcm(x, num)/xint numberOfDistinct(int n){    int ans = 0;     // iterate to count the number of factors    for (int i = 1; i <= sqrt(n); i++) {        if (n % i == 0) {            ans++;            if ((n / i) != i)                ans++;        }    }     return ans;} // Driver Codeint main(){    int n = 3;     cout << numberOfDistinct(n);     return 0;}

Java

 // Java  program to find distinct integers// obtained by lcm(x, num)/x import java.io.*; class GFG {     // Function to count the number of distinct// integers obtained by lcm(x, num)/xstatic int numberOfDistinct(int n){    int ans = 0;     // iterate to count the number of factors    for (int i = 1; i <= Math.sqrt(n); i++) {        if (n % i == 0) {            ans++;            if ((n / i) != i)                ans++;        }    }     return ans;} // Driver Code    public static void main (String[] args) {        int n = 3;         System.out.println (numberOfDistinct(n));      }}

Python3

 # Python 3 program to find distinct integers# obtained by lcm(x, num)/x import math # Function to count the number of distinct# integers obtained by lcm(x, num)/xdef numberOfDistinct(n):    ans = 0     # iterate to count the number of factors    for i in range( 1, int(math.sqrt(n))+1):        if (n % i == 0) :            ans += 1            if ((n // i) != i):                ans += 1    return ans # Driver Codeif __name__ == "__main__":    n = 3     print(numberOfDistinct(n)) # This code is contributed by# ChitraNayal

C#

 // C# program to find distinct integers// obtained by lcm(x, num)/xusing System; class GFG{     // Function to count the number// of distinct integers obtained// by lcm(x, num)/xstatic int numberOfDistinct(int n){    int ans = 0;     // iterate to count the number    // of factors    for (int i = 1; i <= Math.Sqrt(n); i++)    {        if (n % i == 0)        {            ans++;            if ((n / i) != i)                ans++;        }    }     return ans;} // Driver Codestatic public void Main (){    int n = 3;    Console.WriteLine(numberOfDistinct(n));}} // This code is contributed by ajit



Javascript


Output:
2

Time Complexity: O(sqrt(n))

My Personal Notes arrow_drop_up