📜  通过lcm(X,N)/ X获得的不同整数的数量

📅  最后修改于: 2021-06-25 20:04:34             🧑  作者: Mango

给定数字N,请找到通过LCM (X,N)/ X获得的不同整数的数目,其中X可以是任何正数。
例子

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  

已知LCM(x,y)= x * y / GCD(x,y)
所以,

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

因此,只有N 可以是可能的不同整数。因此,计算包括1和N本身在内的N的不同因子的数量,这是必需的答案。
下面是上述方法的实现:

C++
// C++ program to find distinct integers
// ontained by lcm(x, num)/x
#include 
#include 
 
using namespace std;
 
// Function to count the number of distinct
// integers ontained by lcm(x, num)/x
int 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 Code
int main()
{
    int n = 3;
 
    cout << numberOfDistinct(n);
 
    return 0;
}


Java
// Java  program to find distinct integers
// ontained by lcm(x, num)/x
 
import java.io.*;
 
class GFG {
     
// Function to count the number of distinct
// integers ontained by lcm(x, num)/x
static 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));
 
 
    }
}


Python 3
# Python 3 program to find distinct integers
# ontained by lcm(x, num)/x
 
import math
 
# Function to count the number of distinct
# integers ontained by lcm(x, num)/x
def 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 Code
if __name__ == "__main__":
    n = 3
 
    print(numberOfDistinct(n))
 
# This code is contributed by
# ChitraNayal


C#
// C# program to find distinct integers
// ontained by lcm(x, num)/x
using System;
 
class GFG
{
     
// Function to count the number
// of distinct integers ontained
// by lcm(x, num)/x
static 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
static public void Main ()
{
    int n = 3;
    Console.WriteLine(numberOfDistinct(n));
}
}
 
// This code is contributed by ajit


PHP


Javascript


输出:
2

时间复杂度:O(sqrt(n))

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。