Przejdź do głównej zawartości

NWD w Pythonie cz. 1 - wersja z odejmowaniem


Algorytm Euklidesa obliczający największy wspólny dzielnik (NWD) w wersji z odejmowaniem utworzony w Pythonie.

Przydatne wiadomości:

Aby napisać program na podstawie algorytmu często wymagane jest dostosowanie algorytmu do możliwości wykorzystywanego języka programowania, taka sytuacja ma miejsce również w tym przypadku.

Pętla while w Pythonie wykonuje ciąg instrukcji dopóki warunek jest spełniony, powoduje to konieczność niewielkiej modyfikacji algorytmu.

while warunek:
    instrukcje

Wprowadzone zmiany zaznaczone są kolorem żółtym.


Zarówno w jednym jak i drugim przypadku algorytm wyświetli wynik i zakończy działanie kiedy wartości zmiennych a i b będą równe. 

Należy pamiętać iż powyższy algorytm prawidłowo oblicza NWD tylko gdy wprowadzone liczby a i b są większe od zera.

Na podstawie zmodyfikowanego algorytmu utworzona została funkcja obliczająca największy wspólny dzielnik.

def nwd(a, b):
    while a != b:
        if a > b:
            a = a - b
        else:
            b = b - a
    return a

Sprawdź jak to działa »

Korzystając z operatora logicznego not warunek wykonania pętli while można zapisać w inny sposób.

Zamiast: 
    a != b
można zapisać:
    not(a == b)

Wówczas funkcja będzie postać:

def nwd(a, b):
    while not(a == b):
        if a > b:
            a = a - b
        else:
            b = b - a
    return a

Sprawdź jak to działa »