
Algorytmy na maturę z informatyki 2026 – Kompendium: NWD, Sito, Horner
Algorytmiczne 'Must-Have' na maturze 2026:
- ✓Teoria liczb: Liczby pierwsze (Sito Eratostenesa), rozkład na czynniki (faktoryzacja), NWD i NWW.
- ✓Systemy liczbowe: Konwersja dowolny system -> dziesiętny (Schemat Hornera).
- ✓Ciągi: Ciąg Fibonacciego (iteracyjnie vs rekurencyjnie).
- ✓Analiza: Umiejętność określenia złożoności obliczeniowej (np. O(n) vs O(log n)).
Dlaczego algorytmy to klucz do wyniku 90%+?
1. Złożoność obliczeniowa – podstawa teorii
Typowe klasy złożoności na maturze
| Złożoność | Nazwa | Przykład algorytmu |
|---|---|---|
| O(1) | Stała | Dostęp do elementu tablicy: tab[5]. |
| O(log n) | Logarytmiczna | Algorytm Euklidesa, Wyszukiwanie binarne. |
| O(n) | Liniowa | Znalezienie minimum w nieposortowanej tablicy. |
| O(n log n) | Liniowo-logarytmiczna | Dobre sortowanie (Merge Sort, Quick Sort). |
| O(n²) | Kwadratowa | Sortowanie bąbelkowe, sprawdzanie par każdy z każdym. |
2. Liczby pierwsze: Metoda naiwna vs Sito Eratostenesa
A. Sprawdzanie jednej liczby (Optymalne)
def is_prime(n):
if n < 2:
return False
# Sprawdzamy dzielniki tylko do pierwiastka z n
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return TrueKluczowa optymalizacja: `range(2, int(n**0.5) + 1)`. Złożoność wynosi O(√n). Bez tego, dla dużych liczb, program będzie działał za wolno.
B. Sito Eratostenesa (Generowanie zakresu)
def sieve(n):
primes = [True] * (n + 1)
primes[0] = primes[1] = False
for i in range(2, int(n ** 0.5) + 1):
if primes[i]:
# Wykreślamy wielokrotności liczby i
for j in range(i * i, n + 1, i):
primes[j] = False
return [x for x in range(n + 1) if primes[x]]
print(sieve(30)) # [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]Jeśli zadanie brzmi 'Znajdź wszystkie liczby pierwsze mniejsze od miliona', Sito jest jedynym słusznym wyborem. Jest znacznie szybsze niż sprawdzanie `is_prime` dla każdej liczby z osobna.
3. NWD i NWW – Algorytm Euklidesa
Algorytm Euklidesa (Wersja iteracyjna)
def nwd(a, b):
while b:
a, b = b, a % b
return a
# NWW obliczamy ze wzoru:
def nww(a, b):
return (a * b) // nwd(a, b)Złożoność logarytmiczna O(log(min(a, b))). Wersja z modulo (`%`) jest znacznie szybsza niż wersja z odejmowaniem. Pamiętaj o wzorze na NWW – łączy się on bezpośrednio z NWD.
4. Rozkład na czynniki pierwsze (Faktoryzacja)
Faktoryzacja liczby n
def get_prime_factors(n):
factors = []
d = 2
temp = n
while d * d <= temp:
while temp % d == 0:
factors.append(d)
temp //= d
d += 1
if temp > 1:
factors.append(temp)
return factors
print(get_prime_factors(60)) # Wynik: [2, 2, 3, 5]Algorytm dzieli liczbę przez najmniejszy możliwy dzielnik (2, potem 3, itd.) tak długo, jak się da. Warunek `if temp > 1` na końcu wyłapuje ostatni czynnik pierwszy, jeśli liczba nie zredukowała się do 1.
5. Systemy liczbowe i Schemat Hornera
Schemat Hornera (System X -> Dziesiętny)
def horner(liczba_str, system):
wynik = 0
for cyfra in liczba_str:
wynik = wynik * system + int(cyfra)
return wynik
# Binarny na dziesiętny
print(horner("1101", 2)) # 13
# Ósemkowy na dziesiętny
print(horner("17", 8)) # 15Zamiast potęgować `cyfra * podstawa^k`, Horner wykorzystuje mnożenie i dodawanie: `((1*2 + 1)*2 + 0)*2 + 1`. Jest to bardziej efektywne i często wymagane w specyfikacji zadania.
6. Ciąg Fibonacciego – Pułapka rekurencji
Fibonacci Iteracyjnie (Bezpieczny)
def fib_iter(n):
if n <= 1: return n
a, b = 0, 1
for _ in range(2, n + 1):
a, b = b, a + b
return bZłożoność liniowa O(n). Działa błyskawicznie nawet dla n=1000.
Fibonacci Rekurencyjnie (Ryzykowny)
def fib_rec(n):
if n <= 1: return n
return fib_rec(n-1) + fib_rec(n-2)Złożoność wykładnicza O(2^n). Dla n=40 program może działać kilka sekund, dla n=50 – 'zawiśnie'. Używaj tylko dla bardzo małych n lub z zapamiętywaniem (memoization).
Najczęściej zadawane pytania (FAQ) - Algorytmika
Czy muszę pisać własną funkcję konwersji systemów, czy mogę użyć `int(x, base)`?
Jaką metodę sortowania wybrać na maturze?
Czy Sito Eratostenesa jest konieczne?
Podsumowanie
Podoba Ci się ten artykuł?
To tylko wycinek wiedzy! Na naszych korepetycjach omawiamy te tematy jeszcze dokładniej. Zapisz się na lekcję próbną i zdaj egzamin na 100%.
Umów darmową konsultację