📜  两个数字阶乘的GCD

📅  最后修改于: 2021-04-27 06:18:23             🧑  作者: Mango

给定两个数字m和n。查找其阶乘的GCD。
例子 :

Input : n = 3, m = 4
Output : 6
Explanation:
Factorial of n = 1 * 2 * 3 = 6
Factorial of m = 1 * 2 * 3 * 4 = 24
GCD(6, 24) = 6.

Input : n = 9, m = 5
Output : 20
Explanation:
Factorial of n = 1 * 2 * 3 *4 * 5 * 6 * 7 * 8 
* 9 = 362880
Factorial of m = 1 * 2 * 3 * 4 * 5 = 120
GCD(362880, 120) = 120

一个简单的解决方案是找到两个数字的阶乘。然后找到计算的阶乘的GCD。
一个有效的解决方案基于以下事实:两个阶乘的GCD等于较小的阶乘(请注意,阶乘具有所有通用的术语)。
下面是上述方法的实现。

C++
// CPP program to find GCD of factorial of two
// numbers.
#include 
using namespace std;
 
int factorial(int x)
{
    if (x <= 1)
        return 1;
    int res = 2;
    for (int i = 3; i <= x; i++)
        res = res * i;
    return res;
}
 
int gcdOfFactorial(int m, int n)
{
    return factorial(min(m, n));
}
 
int main()
{
    int m = 5, n = 9;
    cout << gcdOfFactorial(m, n);
    return 0;
}


Java
// Java program to find GCD of factorial
// of two numbers.
public class FactorialGCD{
     
static int factorial(int x)
{
    if (x <= 1)
        return 1;
    int res = 2;
    for (int i = 3; i <= x; i++)
        res = res * i;
    return res;
}
 
static int gcdOfFactorial(int m, int n)
{
    int min = m < n ? m : n;
    return factorial(min);
}
 
    /* Driver program to test above functions */
    public static void main (String[] args)
    {
        int m = 5, n = 9;
         
        System.out.println(gcdOfFactorial(m, n));
    }
}
 
// This code is contributed by Prerna Saini


Python
# Python code to find GCD of factorials of
# two numbers.
import math
 
def gcdOfFactorial(m, n) :
    return math.factorial(min(m, n))
 
# Driver code
m = 5
n = 9
print(gcdOfFactorial(m, n))


C#
// C# program to find GCD of factorial
// of two numbers.
using System;
 
public class GFG{
      
    static int factorial(int x)
    {
        if (x <= 1)
            return 1;
             
        int res = 2;
         
        for (int i = 3; i <= x; i++)
            res = res * i;
             
        return res;
    }
      
    static int gcdOfFactorial(int m, int n)
    {
        int min = m < n ? m : n;
        return factorial(min);
    }
  
    /* Driver program to test above functions */
    public static void Main()
    {
         
        int m = 5, n = 9;
          
        Console.WriteLine(gcdOfFactorial(m, n));
    }
}
  
// This code is contributed by Anant Agarwal.


PHP


Javascript


输出 :

120