C++ 程序用于求多个数字(或数组)的最大公约数?
在这里,我们将看到如何获取多个数字的最大公约数。求两个数字的最大公约数很容易。当我们想要求多个数字的最大公约数时,我们必须遵循最大公约数的结合律。例如,如果我们想求 {w, x, y, z} 的最大公约数,那么它将是 {gcd(w,x), y, z},然后是 {gcd(gcd(w,x), y), z},最后是 {gcd(gcd(gcd(w,x), y), z)}。使用数组可以很轻松地完成此操作。
算法
gcd(a, b)
begin if a is 0, then return b end if return gcd(b mod a, a) end
getArrayGcd(arr, n)
begin res := arr[0] for i in range 1 to n-1, do res := gcd(arr[i], res) done return res; end
范例
#include<iostream> using namespace std; int gcd(int a, int b) { if (a == 0) return b; return gcd(b%a, a); } int getArrayGcd(int arr[], int n) { int res = arr[0]; for(int i = 1; i < n; i++) { res = gcd(arr[i], res); } return res; } main() { int arr[] = {4, 8, 16, 24}; int n = sizeof(arr)/sizeof(arr[0]); cout << "GCD of array elements: " << getArrayGcd(arr, n); }
输出结果
GCD of array elements: 4
广告