KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2013

PYTANIE NR 8.
Na rysunku przedstawiono schemat blokowy algorytmu umożliwiający
Ilustracja przedstawia schemat blokowy algorytmu, który służy do obliczania największego wspólnego dzielnika (NWD) dwóch
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Schemat tworzy pętlę wykonywaną, gdy a > 0.
W każdej iteracji oblicza się resztę: a := a mod b, a następnie aktualizuje b := b − a. Takie przekształcenia nie zmieniają największego wspólnego dzielnika pary (a,b). Gdy a = 0, wypisywane b jest wynikiem NWD.

Pełne wyjaśnienie:

Schemat blokowy wczytuje dwie liczby a i b, a następnie wykonuje pętlę z warunkiem a > 0. To typowa konstrukcja dla algorytmów iteracyjnych, w których w kolejnych krokach redukuje się wartości wejściowe aż do spełnienia warunku zakończenia.

W gałęzi "TAK" wykonywane są dwie operacje:

  • a := a mod b – a przyjmuje resztę z dzielenia a przez b, czyli wartość mniejszą niż b (dla b > 0).
  • b := b − a – b jest pomniejszane o nową wartość a.

Kluczowe jest to, że w takim algorytmie utrzymuje się niezmiennik pętli: wartość NWD(a,b) nie zmienia się mimo aktualizacji zmiennych. Intuicyjnie: jeśli liczba d dzieli jednocześnie a i b, to dzieli także resztę (a mod b), a także różnicę b − (a mod b). Dzięki temu w kolejnych iteracjach przechodzimy do "mniejszych" liczb, zachowując ten sam NWD.

Gdy warunek pętli przestaje być spełniony, czyli a = 0, schemat przechodzi do wypisania b. To również jest charakterystyczne dla algorytmu Euklidesa: jeśli jedna z liczb jest równa 0, druga jest największym wspólnym dzielnikiem.

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • Sortowanie liczb a i b – sortowanie wymagałoby porównania i ewentualnej zamiany wartości, a nie operacji modulo i odejmowania w pętli prowadzącej do zera.
  • Najkrótsza droga między punktami – takie algorytmy pracują na grafach/węzłach i kosztach, a w schemacie nie ma struktur danych ani akumulacji odległości.
  • Sprawdzenie poprawności wpisania liczb – walidacja danych zwykle sprawdza zakresy/typy (np. b ≠ 0), a tu wykonywane są systematyczne przekształcenia arytmetyczne prowadzące do wyniku.

Wniosek: schemat realizuje wariant algorytmu Euklidesa, więc służy do obliczenia największego wspólnego dzielnika liczb a i b.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
NWD (największy wspólny dzielnik) to największa liczba, która dzieli dwie liczby bez reszty. W informatyce używa się go m.in. do skracania ułamków, upraszczania proporcji, zadań z arytmetyki modularnej oraz jako elementu narzędziowego w algorytmach kryptograficznych.
Najczęściej widać pętlę, w której parę liczb zastępuje się "mniejszą" parą, np. przez odejmowanie lub operację modulo. Charakterystyczne jest dążenie do sytuacji, gdy jedna zmienna osiąga 0, a druga staje się wynikiem. Obecność modulo to bardzo silna wskazówka.
Reszta z dzielenia zachowuje informację o wspólnych dzielnikach: jeśli liczba dzieli a i b, to dzieli też (a mod b). Dzięki temu można zastąpić a przez a mod b i dalej szukać NWD na mniejszych liczbach, co przyspiesza działanie algorytmu.
Tak. Istnieje wiele równoważnych wariantów algorytmu Euklidesa: tylko odejmowanie, tylko modulo oraz formy mieszane. Kluczowe jest utrzymanie niezmiennika, że NWD pary liczb się nie zmienia, oraz zapewnienie postępu prowadzącego do warunku stopu (np. jedna liczba staje się 0).
Kończy działanie, gdy warunek pętli nie jest spełniony, czyli gdy a = 0. Wtedy druga zmienna (tu: b) jest wypisywana jako wynik. To standardowa własność algorytmów NWD: NWD(0,b) = b (dla b > 0).
Typowe błędy to: pomijanie warunku zakończenia, mylenie kolejności aktualizacji zmiennych (np. nieuwzględnianie, że druga linia używa nowego a), odrzucanie wariantu "bo nie wygląda jak znany", oraz utożsamianie dowolnej pętli z walidacją danych zamiast z obliczeniami.
Zwykle nie. Sortowanie dwóch liczb wymagałoby porównania i ewentualnej zamiany wartości, a nie wielokrotnego stosowania modulo i odejmowania aż do uzyskania zera. Operacje arytmetyczne typu modulo są typowe dla NWD, a nie dla sortowania.
Weź proste liczby, np. a=12, b=8, i prześledź iteracje: w każdej pętli oblicz resztę a mod b, potem zaktualizuj b := b − a. Gdy a dojdzie do 0, odczytaj b. Jeśli b wyjdzie 4, to zgadza się z NWD(12,8)=4.
Algorytmy najkrótszej ścieżki (np. Dijkstry) operują na grafach: mają węzły, krawędzie i koszty. W pokazanym schemacie są tylko dwie liczby i operacje arytmetyczne (modulo, odejmowanie). Brakuje danych wejściowych typowych dla problemu drogi.
Ćwicz rozpoznawanie wzorców: pętle z odejmowaniem/modulo (NWD), akumulatory sumy/liczniki (zliczanie), warunki wejścia/wyjścia (walidacja). Równolegle trenuj "ręczne" przejście po schemacie dla 2–3 przykładów, aby nie mylić kolejności przypisań.
info

To pytanie poprawnie rozwiązuje 43% zdających egzamin. trudne

Eksperci podkreślają: "Schemat tworzy pętlę wykonywaną, gdy a > 0.W każdej iteracji oblicza się resztę: a := a mod b, a następnie aktualizuje b := b − a."

Źródła:

  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, "Introduction to Algorithms", rozdział o NWD i algorytmie Euklidesa (Euclid’s algorithm), wydanie zależne od posiadanego podręcznika
  • Donald E. Knuth, "The Art of Computer Programming", Volume 2: Seminumerical Algorithms, sekcje dotyczące NWD i algorytmu Euklidesa, wydanie zależne od posiadanego podręcznika
  • Wikipedia: "Algorytm Euklidesa" (opis własności NWD i wariantów z modulo), https://pl.wikipedia.org/wiki/Algorytm_Euklidesa - dostęp 2026-02-18

Materiały:

  • Podręczniki i skrypty do podstaw algorytmiki (działy o NWD i algorytmie Euklidesa)
  • Materiały o schematach blokowych i strukturach sterowania (pętle, warunki)
  • Zadania treningowe: implementacja NWD w wersji iteracyjnej i rekurencyjnej w wybranym języku

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego