在C ++中找到给定数组的元素阶乘的GCD

假设我们有一个包含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

以上是 在C ++中找到给定数组的元素阶乘的GCD 的全部内容, 来源链接: utcz.com/z/331553.html

回到顶部