给定两个数字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