So che l'algoritmo di Euclide è l'algoritmo migliore per ottenere il GCD (grande divisore comune) di un elenco di numeri interi positivi. Ma in pratica puoi codificare questo algoritmo in vari modi. (Nel mio caso, ho deciso di utilizzare Java, ma C / C ++ potrebbe essere un'altra opzione).
Devo usare il codice più efficiente possibile nel mio programma.
In modalità ricorsiva, puoi scrivere:
static long gcd (long a, long b){
a = Math.abs(a); b = Math.abs(b);
return (b==0) ? a : gcd(b, a%b);
}
E in modalità iterativa, assomiglia a questo:
static long gcd (long a, long b) {
long r, i;
while(b!=0){
r = a % b;
a = b;
b = r;
}
return a;
}
Esiste anche l'algoritmo binario per GCD, che può essere codificato semplicemente in questo modo:
int gcd (int a, int b)
{
while(b) b ^= a ^= b ^= a %= b;
return a;
}