Ich möchte den größten gemeinsamen Teiler mit JavaScript finden.JS wie finde ich den größten gemeinsamen Teiler
Wer schon einmal gemacht und bereit zu teilen?
Ich möchte den größten gemeinsamen Teiler mit JavaScript finden.JS wie finde ich den größten gemeinsamen Teiler
Wer schon einmal gemacht und bereit zu teilen?
Hier ist eine rekursive Lösung.
var gcd = function(a, b) {
if (! b) {
return a;
}
return gcd(b, a % b);
};
Unser Basisszenario ist, wenn b
-0
gleich ist. In diesem Fall geben wir a
zurück.
Wenn wir rekursiv sind, tauschen wir die Eingabeargumente aus, aber wir übergeben den Rest von a/b
als zweites Argument.
function egcd(a, b) {
if (a == 0)
return b;
while (b != 0) {
if (a > b)
a = a - b;
else
b = b - a;
}
return a;
}
Aus Wikipedia entnommen.
Rekursiv:
function gcd_rec(a, b) {
if (b) {
return gcd_rec(b, a % b);
} else {
return Math.abs(a);
}
}
Iterative:
function gcd(a,b) {
a = Math.abs(a);
b = Math.abs(b);
if (b > a) {var temp = a; a = b; b = temp;}
while (true) {
if (b == 0) return a;
a %= b;
if (a == 0) return b;
b %= a;
}
}
'if (a <0) a = -a;' Sie können auch mach 'a = Math.abs (a); '(gleich für die nächste Zeile) – user2428118
funktioniert gut, danke! – bboy
rekursiv ist nicht der schnellste. –
@FlorianF Okay, danke dafür. Ich habe verpasst, wo das OP um die schnellste Lösung gebeten hat. – alex