Matura z informatyki to nie tylko programowanie, ale także umiejętność stosowania kluczowych algorytmów matematycznych. Wśród najczęściej pojawiających się tematów znajdują się algorytmy związane z liczbami pierwszymi, największym wspólnym dzielnikiem (NWD), najmniejszą wspólną wielokrotnością (NWW) oraz konwersją liczb między różnymi systemami liczbowymi. W tym artykule omówimy te zagadnienia krok po kroku, z przykładami w Pythonie, aby pomóc Ci przygotować się do matury. Zaczynamy!
Na maturze z informatyki często pojawiają się zadania wymagające analizy matematycznej i programistycznej. Algorytmy związane z liczbami pierwszymi, NWD, NWW czy konwersją systemów liczbowych są podstawą wielu zadań, szczególnie w części praktycznej. Opanowanie ich pozwala nie tylko rozwiązać zadania, ale także zoptymalizować kod, co jest wysoko punktowane. Przyjrzyjmy się każdemu z tych algorytmów.
Liczba pierwsza to liczba naturalna większa od 1, która dzieli się tylko przez 1 i samą siebie. Na maturze zadania z liczbami pierwszymi mogą dotyczyć np. sprawdzania, czy liczba jest pierwsza, lub rozkładu liczby na czynniki pierwsze.
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
# Przykład użycia
print(is_prime(17)) # Wynik: True
print(is_prime(15)) # Wynik: False
Algorytm sprawdza, czy liczba n jest podzielna przez jakiekolwiek liczby od 2 do pierwiastka kwadratowego z n. Jeśli tak, liczba nie jest pierwsza. Optymalizacja z pierwiastkiem zmniejsza czas obliczeń.
NWD dwóch liczb to największa liczba, która dzieli obie liczby bez reszty. Na maturze NWD jest często używany w zadaniach związanych z upraszczaniem ułamków lub znajdowaniem wspólnych miar.
def nwd(a, b):
while b:
a, b = b, a % b
return a
# Przykład użycia
print(nwd(48, 18)) # Wynik: 6
Algorytm Euklidesa znajduje największy wspólny dzielnik dwóch liczb poprzez iteracyjne dzielenie i zamianę wartości. To szybka metoda obliczeniowa, często stosowana na maturze.
NWW to najmniejsza liczba, która jest wielokrotnością obu podanych liczb. Jest używana np. w zadaniach dotyczących synchronizacji cykli lub znajdowania wspólnego mianownika ułamków.
def nwd(a, b):
while b:
a, b = b, a % b
return a
def nww(a, b):
return (a * b) // nwd(a, b)
# Przykład użycia
print(nww(12, 18)) # Wynik: 36
Uwaga: Dzielenie całkowite (//) zapewnia, że wynik jest liczbą całkowitą. NWW można obliczyć za pomocą wzoru: NWW(a, b) = (a * b) / NWD(a, b)
Zadania związane z konwersją liczb między systemami (np. dziesiętny, binarny, szesnastkowy) są bardzo popularne na maturze. Mogą obejmować zarówno konwersję ręczną, jak i programistyczną.
def decimal_to_binary(n):
if n == 0:
return "0"
binary = ""
while n > 0:
binary = str(n % 2) + binary
n //= 2
return binary
# Przykład użycia
print(decimal_to_binary(13)) # Wynik: 1101
Python ma wbudowaną funkcję bin(), ale na maturze warto znać algorytm ręczny.
def binary_to_decimal(binary):
decimal = 0
power = 0
for digit in reversed(binary):
decimal += int(digit) * (2 ** power)
power += 1
return decimal
# Przykład użycia
print(binary_to_decimal("1101")) # Wynik: 13
Ręczne przeliczanie binarnych liczb na dziesiętne ułatwia zrozumienie algorytmów.
def decimal_to_hex(n):
if n == 0:
return "0"
hex_digits = "0123456789ABCDEF"
result = ""
while n > 0:
result = hex_digits[n % 16] + result
n //= 16
return result
# Przykład użycia
print(decimal_to_hex(255)) # Wynik: FF
Python ma wbudowaną funkcję hex(), ale na maturze warto znać algorytm ręczny.
Algorytmy związane z liczbami pierwszymi, NWD, NWW oraz konwersją systemów liczbowych to podstawowe zagadnienia na maturze z informatyki. Ich opanowanie pozwoli Ci sprawnie rozwiązywać zadania i zdobyć wysoki wynik. Regularne ćwiczenie przykładów, takich jak te przedstawione powyżej, oraz praktyka programowania to klucz do sukcesu. Jeśli potrzebujesz dodatkowego wsparcia, odwiedź prokorepetycje.pl i zapisz się na korepetycje z informatyki już dziś!