Saya tahu bahwa algoritma Euclid adalah algoritma terbaik untuk mendapatkan GCD (pembagi umum yang hebat) dari daftar bilangan bulat positif. Namun dalam praktiknya Anda dapat membuat kode algoritma ini dengan berbagai cara. (Dalam kasus saya, saya memutuskan untuk menggunakan Java, tetapi C / C ++ mungkin merupakan pilihan lain).
Saya perlu menggunakan kode seefisien mungkin dalam program saya.
Dalam mode rekursif, Anda dapat menulis:
static long gcd (long a, long b){
a = Math.abs(a); b = Math.abs(b);
return (b==0) ? a : gcd(b, a%b);
}
Dan dalam mode berulang, tampilannya seperti ini:
static long gcd (long a, long b) {
long r, i;
while(b!=0){
r = a % b;
a = b;
b = r;
}
return a;
}
Ada juga algoritma Biner untuk GCD, yang mungkin dikodekan seperti ini:
int gcd (int a, int b)
{
while(b) b ^= a ^= b ^= a %= b;
return a;
}