Hogyan kell pythonban 2 szám legnagyobb közös osztóját kiszámolni? Ezt találtam: (de nem jó)
import sys
a, b = int(sys.argv[1]), int(sys.argv[2])
x = [ 1, 0 ]
y = [ 0, 1 ]
r = [ a, b ]
q = [ 0 ]
n = 0
while (r[n+1] != 0) :
q.append(r[n] // r[n+1])
r.append(r[n] % r[n+1])
x.append(x[n] - x[n+1] * q[n+1])
y.append(y[n] - y[n+1] * q[n+1])
# egyszeru kiiras
#print r[n], "=", r[n+1], "*", q[n+1], "+", r[n+2]
# bovitett kiiras
#print r[n+2], "\t", x[n+2], "\t", y[n+2], "\t",
# r[n+2], "=", a, "*", x[n+2], "+", b, "*",
# y[n+2]
n += 1
x, y, d = x[n], y[n], r[n]
print ("\n", d, "=", a, "*", x, "+", b, "*", y)
js-ben: Bár nem tudom hogy hogy lehetne a scriptet ellenőrizni.
<script>
var a = parseInt(prompt('Első szám'));
var b = parseInt(prompt('második szám'));
alert(a+' '+b);
if(a > b){a += b; b = a-b; a = a-b;}
var o=a;
var i = 1;
while (o>1){
if(a%i == 0){
var o = a/i;
if(b%o == 0){
alert('legnagyobb közös osztó:'+ o);
o= 1;
}
}
i++;
}
alert('vége');
</script>
Már meg van írva a fractions modulban, csak be kell importálni:
from fractions import gcd
Vagy ha az algoritmus érdekel akkor:
def gcd(a, b):
. . while b:
. . . a, b = b, a%b
. . return a
Ezután csak meg kell hívni, pl.:
gcd(12,20)
Az algoritmus, amit keresel: euklideszi algoritmus.
A Wikipedián 3 féle implementációja is elérhető:
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!