Ich weiß, dass der Algorithmus von Euclid der beste Algorithmus ist, um den GCD (Great Common Divisor) einer Liste positiver Ganzzahlen zu erhalten. In der Praxis können Sie diesen Algorithmus jedoch auf verschiedene Arten codieren. (In meinem Fall habe ich mich für Java entschieden, aber C / C ++ könnte eine andere Option sein).
Ich muss den effizientesten Code in meinem Programm verwenden.
Im rekursiven Modus können Sie schreiben:
static long gcd (long a, long b){
a = Math.abs(a); b = Math.abs(b);
return (b==0) ? a : gcd(b, a%b);
}
Und im iterativen Modus sieht es so aus:
static long gcd (long a, long b) {
long r, i;
while(b!=0){
r = a % b;
a = b;
b = r;
}
return a;
}
Es gibt auch den Binäralgorithmus für die GCD, der einfach so codiert werden kann:
int gcd (int a, int b)
{
while(b) b ^= a ^= b ^= a %= b;
return a;
}