Wpis z mikrobloga

Da się jakoś nazwać tę operację (jakaś mieszanka NWW/NWD)?

def some_name(a, b):
while a > 1 and b > 1:
if a > b:
a = a - b * (a // b)
else:
b = b - a * (b // a)
return a, b

# some_name(19, 5) => (4, 1)
# some_name(5, 2) => (1, 2)
# some_name(6, 2) => (0, 2)

#matematyka #informatyka #studia
  • 12
@Quiz: Nie wiem. Ale czemu zmienna zwracana ma taki sam symbol jak wejściowa? No i dlaczego kod zwraca dwie zmienne, skoro powinien wykonać tylko jedną z operacji?
Ale czemu zmienna zwracana ma taki sam symbol jak wejściowa?


@Iperyt:
A jest jakiś zakaz? Wręcz przeciwnie - dobrą praktyką jest nie produkowanie zbędnych nazw.

i dlaczego kod zwraca dwie zmienne, skoro powinien wykonać tylko jedną z operacji?


@Iperyt:
Wykonuje wiele operacji.
@Quiz:
Jeśli obie są podzielne przez x, to po każdym kroku nadal będą.
Aż dojdziemy do (0,x) lub (x,0).
Jeśli zaś NWD=1 to wynikiem będzie (1,coś) lub (coś,1).
Takie wnioski mam na razie.
Służy do wyznaczania NWD.


@deryt:
Tylko jakiś jakby niedokończony.
Jeśli chcesz aby zwracał NWW to dopisz zamiast return:

if a=1 return 1

if b=1 return 1

if a=0 return b

if b=0 return a

return 0 //błąd programu

(da się zwięźlej, ale chciałem aby było czytelne)