Testowanie pierwszości do sqrt(n)
Wydajne sprawdzanie pojedynczej liczby
Testowanie pierwszości do sqrt(n) to bezpłatna lekcja Coding Interview Prep na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Coding Interview Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Coding Interview Prep zawiera 4 lekcji w sumie.
Pytanie o liczby pierwsze
Podstawową umiejętnością matematyczną jest sprawdzenie, czy pojedyncza liczba jest pierwsza. Liczba pierwsza ma dokładnie dwa dzielniki: jeden i samą siebie. Sprawdźmy to szybko. 🔍
Naiwne sprawdzanie
Można próbować dzielić n przez każdą liczbę od 2 do n minus 1. To poprawne rozwiązanie, ale boleśnie wolne, gdy n jest duże.
Sposób z pierwiastkiem kwadratowym
Kluczowy wniosek jest następujący: wystarczy sprawdzać dzielniki do pierwiastka kwadratowego z n. Powyżej tej wartości nie może pojawić się żaden nowy czynnik.
Dlaczego wystarczy pierwiastek
Dzielniki występują w parach, których iloczyn jest równy n. Gdyby oba były większe od pierwiastka kwadratowego, ich iloczyn przekroczyłby n, co jest niemożliwe.
Granica pętli
Należy iterować po i od 2, dopóki i razy i pozostaje mniejsze lub równe n. Użycie i*i pozwala uniknąć błędów zmiennoprzecinkowych funkcji sqrt dla dużych liczb całkowitych.
while i * i <= n:
...Obsługa małych przypadków
Liczby mniejsze od 2 nigdy nie są pierwsze, dlatego należy odrzucić je na początku. Taki warunek ochronny sprawia, że główna pętla pozostaje przejrzysta i poprawna.
if n < 2:
return FalsePełna funkcja
Należy połączyć wszystkie elementy: odrzucić małe wartości, a następnie sprawdzać potencjalne dzielniki aż do pierwiastka. Każde dzielenie bez reszty oznacza, że n jest złożone.
def is_prime(n):
if n < 2:
return False
i = 2
while i * i <= n:
if n % i == 0:
return False
i += 1
return TruePrzyspieszenie
Najpierw należy osobno sprawdzić 2, a następnie testować tylko liczby nieparzyste. Pomijanie liczb parzystych mniej więcej połowę pracy bez dodatkowej złożoności.
if n % 2 == 0:
return n == 2Koszt czasowy
Ten test działa w czasie O(sqrt n). Dla pojedynczej liczby nie większej niż miliard to tylko około 30 000 prostych operacji.
Jedna liczba, nie wiele
Test z pierwiastkiem sprawdza się doskonale dla jednego lub kilku zapytań. Jeśli potrzebne jest sprawdzenie pierwszości całego zakresu, znacznie szybszy będzie algorytm sita.
Unikanie pułapki pierwiastka
Porównywanie z i*i zamiast użycia math.sqrt pozwala uniknąć błędów zaokrągleń, które mogą nieprawidłowo uznać graniczną liczbę za pierwszą lub złożoną.
Szybkie sprawdzenie
Proszę przypomnieć sobie granicę, która sprawia, że ten test jest szybki.
Podsumowanie
Można już sprawdzać pierwszość jednej liczby w czasie O(sqrt n), odrzucać małe wartości, pomijać liczby parzyste i używać i*i, aby zachować dokładność. ✅
Ucz się Coding Interview Prep dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 90
- Lekcje
- 360
Często zadawane pytania
Czy lekcja „Testowanie pierwszości do sqrt(n)” jest bezpłatna?
Tak — pełny tekst „Testowanie pierwszości do sqrt(n)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Coding Interview Prep, przejdź na CoddyKit PRO. Kurs Coding Interview Prep zawiera 4 lekcji w sumie.
Co nauczysz się w „Testowanie pierwszości do sqrt(n)”?
Wydajne sprawdzanie pojedynczej liczby Ćwiczysz Coding Interview Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Coding Interview Prep?
Nie wymagamy żadnego doświadczenia. Coding Interview Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Testowanie pierwszości do sqrt(n)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Coding Interview Prep?
Tak. Każda lekcja Coding Interview Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- NWD, NWW i algorytm Euklidesa
- Testowanie pierwszości do sqrt(n)
- Sito Eratostenesa
- Rozkład na czynniki pierwsze i dzielniki