Coding Interview Prep · Lekcja

Testowanie pierwszości do sqrt(n)

Wydajne sprawdzanie pojedynczej liczby

Lekcja 2 z 413 kroki

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 False

Peł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 True

Przyspieszenie

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 == 2

Koszt 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ść. ✅

Bezpłatny start

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

  1. NWD, NWW i algorytm Euklidesa
  2. Testowanie pierwszości do sqrt(n)
  3. Sito Eratostenesa
  4. Rozkład na czynniki pierwsze i dzielniki
← Powrót do Coding Interview Prep