Je sais que l'algorithme d'Euclide est le meilleur algorithme pour obtenir le GCD (grand diviseur commun) d'une liste d'entiers positifs. Mais en pratique, vous pouvez coder cet algorithme de différentes manières. (Dans mon cas, j'ai décidé d'utiliser Java, mais C / C ++ peut être une autre option).
J'ai besoin d'utiliser le code le plus efficace possible dans mon programme.
En mode récursif, vous pouvez écrire:
static long gcd (long a, long b){
a = Math.abs(a); b = Math.abs(b);
return (b==0) ? a : gcd(b, a%b);
}
Et en mode itératif, cela ressemble à ceci:
static long gcd (long a, long b) {
long r, i;
while(b!=0){
r = a % b;
a = b;
b = r;
}
return a;
}
Il y a aussi l'algorithme binaire pour le GCD, qui peut être codé simplement comme ceci:
int gcd (int a, int b)
{
while(b) b ^= a ^= b ^= a %= b;
return a;
}