假设我们有一个包含N个元素的数组A。我们必须找到数组所有元素的阶乘的GCD。假设元素为{3,4,8,6},那么阶乘的GCD为6。在这里我们将看到窍门。由于两个数的GCD是最大数,将两个数相除,因此两个数的阶乘的GCD就是最小数本身的阶乘的值。那么3的gcd!和5!是3!= 6。
#include <iostream> using namespace std; long fact(int n){ if(n <= 1) return 1; return n * fact(n-1); } int gcd(int arr[], int n) { int min = arr[0]; for (int i = 1; i < n; i++) { if(min > arr[i]) min = arr[i]; } return fact(min); } int main() { int arr[] = {3, 4, 8, 6}; int n = sizeof(arr)/sizeof(arr[0]); cout << "GCD: "<< gcd(arr, n); }
输出结果
GCD: 6