Wszystkie zagadnienia: Algorytmy
średni NWDrekurencjamatura rozszerzona z informatyki

NWD – algorytm Euklidesa

Największy wspólny dzielnik dwóch liczb, liczony szybko metodą Euklidesa. Z animacją.

01

Opis

NWD to największa liczba, przez którą dzielą się bez reszty obie dane liczby. Na przykład NWD liczb 12 i 18 to 6, bo 6 dzieli i 12, i 18, a nic większego już nie.

Jak to policzyć szybko? Zamiast sprawdzać po kolei wszystkie dzielniki, używamy sztuczki Euklidesa. Zauważył on, że NWD dwóch liczb nie zmienia się, gdy większą liczbę zastąpimy resztą z jej dzielenia przez mniejszą. Powtarzamy to, aż jedna z liczb stanie się zerem – wtedy druga liczba jest szukanym NWD.

Przykład dla 48 i 36: 48 mod 36 = 12, więc para robi się (36, 12). Dalej 36 mod 12 = 0, więc para to (12, 0). Zostało zero, więc NWD to 12.

Na maturze: NWD przydaje się przy skracaniu ułamków oraz jako krok do policzenia NWW. Wersja Euklidesa jest tak krótka, że warto ją znać na pamięć.

Wizualizacja

Zobacz metodę Euklidesa krok po kroku. W każdym kroku większą liczbę zastępujemy resztą z dzielenia (a mod b), aż jedna z liczb spadnie do zera. Wtedy druga liczba to szukany NWD.

a48
b36
NWD?

Naciśnij „Krok", aby wykonać jedno dzielenie z resztą, albo „Auto".

02

Pseudokod

funkcja nwd(a, b):
  dopóki b ≠ 0:
    r ← a mod b   // reszta z dzielenia
    a ← b
    b ← r

  zwróć a
03

Implementacja w Pythonie i C++

def nwd(a, b):
    """Zwraca największy wspólny dzielnik a i b (metoda Euklidesa)."""
    while b != 0:
        a, b = b, a % b   # większą liczbę zastępujemy resztą
    return a


# Przyklady uzycia
print(nwd(48, 36))  # Wynik: 12
print(nwd(17, 5))   # Wynik: 1
04

Najczęściej zadawane pytania

Co oznacza skrót NWD?

Największy Wspólny Dzielnik – największa liczba, przez którą dzielą się bez reszty obie dane liczby.

Dlaczego metoda Euklidesa jest lepsza niż sprawdzanie wszystkich dzielników?

Bo zamiast przeglądać wszystkie liczby po kolei, w każdym kroku mocno zmniejsza liczby (biorąc resztę). Dochodzi do wyniku w kilku krokach nawet dla ogromnych liczb.

Kiedy NWD dwóch liczb wynosi 1?

Gdy liczby nie mają żadnego wspólnego dzielnika poza jedynką. Mówimy wtedy, że są względnie pierwsze – na przykład 17 i 5.

Gdzie się to przydaje?

Przy skracaniu ułamków do najprostszej postaci i przy liczeniu najmniejszej wspólnej wielokrotności (NWW).

05

Ćwiczenie

Policz NWD i wpisz wynik, potem kliknij Sprawdź.

NWD liczb 12 i 18 to . NWD liczb 100 i 40 to . NWD liczb 7 i 13 to .

Uzupełnij kolejne kroki Euklidesa dla 48 i 36:

Para (a, b)a mod b
(48, 36)
(36, 12)

Zostało zero, więc NWD to .

Złożoność obliczeniowa

CzasowaO(log min(a,b))
PamięciowaO(1)

Metoda Euklidesa jest bardzo szybka – liczba kroków rośnie tak wolno jak log z mniejszej liczby, czyli O(log min(a,b)). Pamięci używa tyle co nic (O(1)), bo wystarczą dwie zmienne.

Przećwicz w zadaniach maturalnych

Te zadania CKE sprawdzają dokładnie to zagadnienie – link prowadzi wprost do treści podpunktu w arkuszu:

Więcej zadań: Programowanie

↗

Powiązane zagadnienia