Generator liczb pierwszych online

Szybkie ustawienia:
Separator przy kopiowaniu

Co to jest liczba pierwsza?

Liczba pierwsza to liczba naturalna większa od 1, która dzieli się tylko przez 1 i przez siebie samą. Najmniejsze liczby pierwsze to 2, 3, 5, 7, 11, 13, 17, 19, 23, 29… Liczba 2 jest jedyną parzystą liczbą pierwszą – wszystkie inne liczby parzyste są podzielne przez dwa.

Liczby takie jak 4 (= 2 × 2), 6 (= 2 × 3) czy 15 (= 3 × 5) nie są liczbami pierwszymi – nazywamy je liczbami złożonymi.

Jak działa generator?

Do wyświetlania wszystkich liczb pierwszych w zakresie używamy sita Eratostenesa – jednego z najstarszych i najefektywniejszych algorytmów, który opisał grecki matematyk Eratostenes z Cyreny około 240 r. p.n.e.

Algorytm kolejno wykreśla wielokrotności każdej znalezionej liczby pierwszej. Co pozostaje, to liczby pierwsze. Całe obliczenia odbywają się bezpośrednio w Twojej przeglądarce – żadne dane nie są wysyłane na serwer.

W przypadku losowego wyboru generator najpierw tworzy listę wszystkich liczb pierwszych w zakresie, a następnie losowo wybiera z niej żądaną liczbę za pomocą kryptograficznie bezpiecznego generatora (crypto.getRandomValues()).

Funkcje generatora

  • Wszystkie liczby pierwsze – wyświetla każdą liczbę pierwszą w podanym zakresie (max. 10 000)
  • Losowy wybór – wybiera N losowych liczb pierwszych z zakresu (odpowiednie dla dużych zakresów)
  • Sortowanie – sortuj wyniki rosnąco
  • Separator – wybierz, w jaki sposób liczby będą oddzielone podczas kopiowania
  • Szybkie ustawienia – najczęściej używane zakresy jednym kliknięciem

Gdzie używane są liczby pierwsze?

Kryptografia i bezpieczeństwo

Liczby pierwsze są podstawą współczesnej kryptografii. Algorytmy takie jak RSA działają na zasadzie, że iloczyn dwóch dużych liczb pierwszych jest łatwy do obliczenia, ale rozłożenie ich z powrotem na czynniki pierwsze jest obliczeniowo bardzo trudne.

  • Szyfrowanie RSA – klucze są generowane z dwóch dużych liczb pierwszych
  • Diffie-Hellman – wymiana kluczy z modułem pierwszoloczbowym
  • Funkcje skrótu (Hash) – liczby pierwsze jako magiczne stałe (SHA, MD5)

Matematyka i nauka

  • Teoria liczb – podstawowe elementy budulcowe liczb całkowitych
  • Hipoteza Goldbacha – każda liczba parzysta > 2 może być wyrażona jako suma dwóch liczb pierwszych (nadal nieudowodniona)
  • Hipoteza Riemanna – jeden z problemów Hilberta, dotyczy rozkładu liczb pierwszych

Praktyczne zastosowania

  • Tablice skrótu (Hash) – rozmiar tablicy jako liczba pierwsza zmniejsza kolizje
  • Generatory liczb pseudolosowych – kongruencja liniowa z modułem pierwszoloczbowym
  • Muzyka i rytm – polirytmy z cyklami o długościach liczb pierwszych

Rozkład liczb pierwszych

Liczby pierwsze są rozmieszczone nieregularnie wśród liczb naturalnych, ale ich gęstość maleje wraz ze wzrostem zakresu. Opisuje to Twierdzenie o liczbach pierwszych: liczba liczb pierwszych do N wynosi w przybliżeniu N / ln(N).

ZakresLiczba liczb pierwszych
1–104
1–10025
1–1 000168
1–10 0001 229
1–100 0009 592
1–1 000 00078 498

Sito Eratostenesa krok po kroku

Zakres 2–30:
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]

1. Wybierz 2, wykreśl wielokrotności: 4, 6, 8, 10, 12...
2. Wybierz 3, wykreśl wielokrotności: 9, 15, 21, 27...
3. Wybierz 5, wykreśl wielokrotności: 25...
4. √30 ≈ 5.5 → gotowe

Liczby pierwsze: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29

Sito Eratostenesa w kodzie

JavaScript

function sieve(to) {
  const composite = new Uint8Array(to + 1);
  const primes = [];
  for (let p = 2; p <= to; p++) {
    if (composite[p]) continue;
    primes.push(p);
    for (let j = p * p; j <= to; j += p) composite[j] = 1;
  }
  return primes;
}

Python

def sieve(n):
    composite = bytearray(n + 1)
    primes = []
    for p in range(2, n + 1):
        if not composite[p]:
            primes.append(p)
            for j in range(p * p, n + 1, p):
                composite[j] = 1
    return primes

Często zadawane pytania (FAQ)

Czy 1 jest liczbą pierwszą? Nie. Liczba 1 tradycyjnie nie jest uważana za liczbę pierwszą. Powód jest matematyczny – gdybyśmy uznali 1 za liczbę pierwszą, straciłoby ważność twierdzenie o jednoznacznym rozkładzie na czynniki pierwsze.
Czy 2 jest liczbą pierwszą? Tak. Liczba 2 jest najmniejszą i jednocześnie jedyną parzystą liczbą pierwszą. Wszystkie inne liczby parzyste są podzielne przez dwa, a więc są złożone.
Ile jest liczb pierwszych? Nieskończenie wiele. Euklides udowodnił to około 300 r. p.n.e. eleganckim dowodem przez sprzeczność: załóżmy, że istnieje skończona liczba liczb pierwszych. Ich iloczyn + 1 nie może być wtedy podzielny przez żadną z nich – jest to zatem nowa liczba pierwsza, co prowadzi do sprzeczności.
Co to są liczby pierwsze bliźniacze? Liczby pierwsze bliźniacze to pary liczb pierwszych różniących się o 2, na przykład (3, 5), (11, 13), (17, 19), (41, 43). Czy istnieje ich nieskończenie wiele, pozostaje do dziś nierozwiązanym problemem matematyki (Hipoteza liczb pierwszych bliźniaczych).
Jak szybko działa algorytm? Sito Eratostenesa ma złożoność czasową O(n log log n). Dla zakresu do 10 milionów, obliczenia w przeglądarce zazwyczaj trwają poniżej 100 ms.