Sprawdzanie pierwszości liczby
To jeden z najważniejszych algorytmów występujących na maturze z informatyki, jako, iż wiele zadań opiera się na manipulacji liczbami pierwszymi naturalnymi.
Przedstawienie algorytmu w języku Python
def czy_pierwsza(n):
if n < 2:
return False
i = 2
while i * i <= n:
if n % i == 0:
return False
i += 1
return True
Wyjaśnienie algorytmu
Funkcja czy_pierwsza przyjmuje n jako liczbę naturalną, a zwraca werdykt, czy jest ona liczbą pierwszą. W pierwszym warunku upewniamy się, że liczba jest większa od jedynki, bowiem takie liczby nie mogą być pierwsze.
Występujący w pętli while kwadrat zmiennej iteracyjnej imituje działanie pierwiastka. Po co? Dlatego, że nie warto sprawdzać dzielników większych niż pierwiastek kwadratowy z n. Jest to zatem kwestia optymalizacji, a ponadto nasza implementacja nie wykorzystuje żadnej biblioteki.
Sprawdzamy zatem, czy liczby i = 4, 9, 16... dzielą liczbę n. Jeżeli tak - nie może być ona pierwsza.
Przykład
Sprawdźmy pierwszość liczby 31.
i | i^2 | n % i |
---|---|---|
2 | 4 | 31 % 2 != 0 |
3 | 9 | 31 % 3 != 0 |
4 | 16 | 31 % 4 != 0 |
5 | 25 | 31 % 5 != 0 |
6 | 36 | 36 > 31 |
Nie znaleziono czynników, zatem liczba 31 jest pierwsza.
Napisany przez cholewka dnia 27.11.2023 • Ostatnia zmiana: 20.02 15:13