KWALIFIKACJA INF2 + INF3 - CZERWIEC 2015

PYTANIE NR 18.
Jakie działanie wykonuje algorytm dla dodatnich liczb naturalnych?
Ilustracja przedstawia fragment algorytmu w postaci pseudokodu, który jest częścią pytania egzaminacyjnego dotyczącego
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Wynik x = n! oznacza, że algorytm oblicza silnię liczby n, czyli iloczyn kolejnych liczb naturalnych od 1 do n. Pozostałe odpowiedzi opisują pojedyncze mnożenie przez i, użycie operatora modulo albo mnożenie przez (i + 1), a nie pełną akumulację iloczynu.

Pełne wyjaśnienie:

Wyrażenie x = n! oznacza, że algorytm dla dodatniej liczby naturalnej n wyznacza silnię, czyli:

n! = 1 · 2 · 3 · … · n (dla n ≥ 1).

W praktyce algorytm silni najczęściej działa iteracyjnie: ustawia zmienną (np. x) na 1 i w pętli mnoży ją przez kolejne wartości licznika (np. i = 1..n). Taki schemat nazywa się akumulacją iloczynu (akumulator jest aktualizowany w każdej iteracji).

Dlaczego pozostałe opcje nie pasują?

  • x = n*i to tylko jedno mnożenie n przez i. Bez informacji o tym, że i przebiega wszystkie wartości i że wynik jest akumulowany, nie daje to silni, tylko bieżący iloczyn dwóch liczb.
  • x = n%… (operator modulo) zwraca resztę z dzielenia. Modulo nie służy do liczenia iloczynu 1..n, więc nie prowadzi do n!.
  • x = n*(i + 1) również opisuje jednorazowe przekształcenie n zależne od i, a nie wielokrotne mnożenie kolejnych liczb z zapamiętywaniem wyniku.

Wskazówka egzaminacyjna: gdy w zadaniach widzisz pętlę z mnożeniem i "narastającym" wynikiem (x ← x · i), to bardzo często jest to silnia. Gdy jest dodawanie (x ← x + i), zwykle chodzi o sumę.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Silnia to iloczyn kolejnych liczb naturalnych od 1 do n. Zapisuje się ją jako n!, np. 5! = 1·2·3·4·5. W programowaniu często oblicza się ją pętlą, aktualizując akumulator wyniku w każdej iteracji.
Najczęstszy wzorzec to: ustawienie x = 1, a potem pętla, w której wykonywane jest x = x * i dla kolejnych wartości i (np. od 1 do n). Kluczowe jest to, że wynik jest akumulowany, a nie liczony jednorazowo.
Wyrażenie x = n*i opisuje pojedyncze mnożenie dwóch liczb. Silnia wymaga wielokrotnego mnożenia wielu kolejnych wartości (1,2,3,…,n) z zapamiętywaniem wyniku w akumulatorze. Bez pętli i akumulacji nie otrzymasz n!.
Modulo (reszta z dzielenia) zwraca wynik typu "ile zostaje po podziale", np. 7 mod 3 = 1. To operacja używana m.in. do sprawdzania parzystości lub cykliczności, a nie do wyznaczania iloczynu 1..n. Dlatego nie prowadzi do n!.
Najczęściej myli się silnię z pojedynczym mnożeniem przez i albo z potęgowaniem. Inny błąd to pomylenie akumulacji iloczynu (x = x*i) z akumulacją sumy (x = x+i). Warto też uważać na warunki pętli (od 1 do n) i inicjalizację x = 1.
Liczymy iloczyn od 1 do 6: 6! = 1·2·3·4·5·6. Kolejne kroki: 1·2=2, 2·3=6, 6·4=24, 24·5=120, 120·6=720. Taki sam efekt daje pętla z akumulatorem wyniku.
W praktyce często wybiera się wersję iteracyjną, bo jest prosta i nie obciąża stosu wywołań. Rekurencja bywa czytelna (n! = n·(n−1)!), ale przy większych n może prowadzić do problemów z limitem rekurencji. Na egzaminie ważne jest rozpoznanie obu form.
Silnia pojawia się w zadaniach kombinatorycznych, np. liczba permutacji (ułożeń) elementów. W aplikacjach webowych może to być logika w backendzie (API) lub w narzędziach analitycznych. Trzeba jednak uważać na szybki wzrost wartości i przepełnienie typu liczbowego.
Silnia rośnie bardzo szybko, więc łatwo o przepełnienie standardowych typów całkowitych (np. 32-bit lub 64-bit). Rozwiązaniem jest użycie typu o dużej precyzji (big integer) albo ograniczenie n. W zadaniach egzaminacyjnych zwykle chodzi o ideę algorytmu, nie o ekstremalne n.
Sprawdź operator aktualizacji akumulatora: jeśli jest mnożenie (x = x * i), to najczęściej silnia lub iloczyn zakresu. Jeśli jest dodawanie (x = x + i), to suma. Druga wskazówka: inicjalizacja x = 1 sugeruje iloczyn, a x = 0 sugeruje sumę.
info

Około 63% zdających odpowiada poprawnie na to pytanie. średnie

W praktyce zawodowej kluczowe jest to, że wynik x = n! oznacza, że algorytm oblicza silnię liczby n, czyli iloczyn kolejnych liczb naturalnych od 1 do n.

Źródła:

  • Wikipedia (PL): "Silnia" — definicja i własności, https://pl.wikipedia.org/wiki/Silnia (dostęp: 2026-02-18)
  • Wolfram MathWorld: "Factorial", https://mathworld.wolfram.com/Factorial.html (dostęp: 2026-02-18)
  • Python 3 Documentation: "math.factorial(n)", https://docs.python.org/3/library/math.html#math.factorial (dostęp: 2026-02-18)

Materiały:

  • Podręczniki i kursy z podstaw programowania (pętle, zmienne, operatory)
  • Materiały o algorytmach elementarnych: silnia, suma, potęgowanie iteracyjne
  • Dokumentacje języków (np. opis funkcji factorial w bibliotekach standardowych) jako punkt odniesienia definicji

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego