ที่นี่เราจะมาดูกันว่าเราจะได้รับ gcd ของตัวเลขมากกว่าสองตัวได้อย่างไร การหา gcd ของตัวเลขสองตัวนั้นง่าย เมื่อเราต้องการหา gcd ที่มากกว่าสองจำนวน เราต้องปฏิบัติตามกฎการเชื่อมโยงของ gcd ตัวอย่างเช่น หากเราต้องการหา gcd ของ {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