Prvočísla jsou čísla, která se dělí pouze na sebe a na jednotku, což znamená, že nemají žádné dělitele kromě sebe a jednotky. Určení jednoduchosti čísla je důležitým úkolem v programování, včetně jazyka JavaScript.
V tomto článku se podíváme na různé přístupy k definování prvočísel a představíme několik funkcí v JavaScriptu, které vám pomohou tento úkol zvládnout. Podíváme se jak na jednoduché algoritmy, tak na efektivnější metody pro práci s jednoduchými čísly.
Pomocí těchto funkcí budete moci snadno identifikovat prvočísla ve svých programech v JavaScriptu a použít je k řešení různých problémů souvisejících s čísly, faktorizací a kryptografií.
Co jsou prvočísla v JavaScriptu?
Definice prvočísel je základním úkolem v matematice a má svá specifika a pravidla. Například čísla 2, 3, 5, 7, 11 a 13 jsou prvočísla, protože mají pouze dva dělitele - 1 a samotné číslo.
JavaScript nabízí různé metody pro definování prvočísel. Jednou z nejběžnějších metod je kontrola dělitelů čísla. V této metodě ověřujeme, zda číslo má jiné dělitele než 1 a samotné číslo. Pokud neexistují žádné takové dělitele, pak je číslo považováno za jednoduché.
V JavaScriptu se prvočísla často používají k generování ochranných klíčů a ověřování čísel pro jednoduchost v různých úkolech a algoritmech. Jejich definice a použití je důležité nejen v programování, ale také v matematice a kryptografii.
| Příklad prvočísel: | Příklad prvočísel: |
|---|---|
| 2 | 4 |
| 3 | 6 |
| 5 | 8 |
Definice a vlastnosti prvočísel
Prvočísla mají několik zajímavých funkcí:
- Prvočísla se nerozdělují na žádná jiná čísla kromě sebe a jednotek.
- Každé přirozené číslo větší než 1 lze rozložit na jednoduché faktory.
- Existuje nekonečně mnoho párů prvočísel uspořádaných jeden po druhém s rozdílem 2 (takové páry se nazývají dvojčata).
Definice a studium prvočísel má velký praktický význam v různých oblastech matematiky a informatiky, včetně kryptografie a algoritmů.
Metody určování prvočísel v JavaScriptu
1. Metoda přebírání dělitelů
Jedním z jednoduchých způsobů, jak definovat prvočísla v JavaScriptu, je příliš mnoho dělitelů. Pro každé číslo od 2 do n-1 zkontrolujeme, zda je číslo n rozděleno na danou hodnotu dělitele beze zbytku. Pokud se provede alespoň jedno dělení beze zbytku, pak číslo n není prvočíslo.
2. Metoda přepojování děličů s optimalizací
Příliš mnoho dělitelů lze optimalizovat snížením počtu dělitelů, které je třeba zkontrolovat. Například kontrolovat dělitele pouze do odmocniny čísla n nebo kontrolovat pouze liché dělitele.
if (n === 2) return true;
3. Metoda"Eratosthen"
K určení prvočísel před daným číslem n lze použít metodu "Eratosfénové mřížky". Počínaje číslem 2 označujeme všechna jeho násobky jako složená čísla. Poté přejdeme k dalšímu nesdílenému číslu a proces opakujeme. Neuvedená čísla na výstupu budou jednoduchá.
const primes = new Array(n + 1).fill(true);
for (let i = 2; i * i
for (let j = i * 2; j
To jsou jen některé z metod, které můžete použít k určení prvočísel v JavaScriptu. Výběr metody závisí na požadavcích vašeho úkolu a očekávaném rozsahu čísel.
Implementace ověření čísla pro jednoduchost v JavaScriptu
Prvočíslo je přirozené číslo, které je větší než 1 a nemá žádné dělitele kromě 1 a sebe sama. Například čísla 2, 3, 5, 7, 11 jsou prvočísla, zatímco čísla 4, 6, 8, 9, 10 nejsou prvočísla.
K ověření čísla pro jednoduchost v JavaScriptu můžeme použít jednoduchý algoritmus:
- Zkontrolujte, zda je číslo menší nebo rovno 1. Pokud ano, číslo není prvočíslo, protože prvočísla jsou vždy větší než 1.
- Použijeme smyčku, abychom překonali všechna čísla od 2 do kořene z testovaného čísla. Pokud je ověřitelné číslo rozděleno beze zbytku na kterékoli z těchto čísel, není prvočíslo.
- Pokud po cyklu není počet dělitelů, je jednoduchý.
Zde je příklad implementace ověření čísla pro jednoduchost v JavaScriptu:
function isPrime(number) for (let i = 2; i >return true;>
Nyní můžeme tuto funkci použít k ověření libovolného čísla pro jednoduchost. Například:
console.log(isPrime(7)); // trueconsole.log(isPrime(10)); // false
Implementovali jsme tedy algoritmus pro ověření čísla pro jednoduchost v JavaScriptu. Nyní můžete tuto funkci použít pro své úkoly související s jednoduchými čísly.
Efektivní algoritmy pro hledání prvočísel v JavaScriptu
1. Algoritmus eratosfénové mřížky: Tento algoritmus umožňuje najít všechna prvočísla před daným číslem N.je založen na jednoduché myšlence: prvočísla nemají žádné dělitele kromě 1 a sebe sama. Algoritmus eratosthenovy mřížky sestavuje tabulku, kde zapisuje všechna čísla od 2 do N A označuje čísla, která jsou prvočísla. Poté prochází touto tabulkou a vypočítá všechna prvočísla.
2. Algoritmus dělení: Tento algoritmus je založen na přeřazení všech čísel od 2 do kořene z daného čísla N.pokud některé z těchto čísel dělí N beze zbytku, pak n je složené číslo. Pokud žádné z čísel nerozdělí N beze zbytku, pak N je prvočíslo.
3. Millerův-Rabinův Test: Tento algoritmus se používá k testování jednoduchosti velkých čísel. Je založen na náhodném výběru svědků, kteří mohou naznačovat, že číslo N je složené. Pokud číslo projde všemi testy, je s velkou pravděpodobností jednoduché.
Výběr algoritmu závisí na úkolu a dostupných zdrojích. Pro malá čísla lze použít jednodušší algoritmy, jako je příliš mnoho dělitelů. U velkých čísel se doporučuje používat složitější algoritmy, jako je eratosfenova mřížka nebo Millerův-Rabinův test.
Praktické příklady použití metod určování prvočísel v JavaScriptu
JavaScript poskytuje několik metod pro určení prvočísel. Níže jsou uvedeny praktické příklady použití těchto metod:
-
Metoda přebírání dělitelů: tato metoda spočívá v přeřazení všech čísel od 2 do n - 1 a kontrole, zda je číslo n vyděleno žádným z těchto čísel beze zbytku. Pokud je číslo dělitelné beze zbytku alespoň jedním číslem, není prvočíslo. Příklad kódu:
function isPrime(num) for (let i = 2; i < num; i++) >return true;>console.log(isPrime(5)); // trueconsole.log(isPrime(10)); // false
function sieveOfEratosthenes(n) >>for (let i = 2; i >return primes;>console.log(sieveOfEratosthenes(20)); // [2, 3, 5, 7, 11, 13, 17, 19]console.log(sieveOfEratosthenes(30)); // [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
function powerModulo(a, b, n) 0) a = (a * a) % n;b >>= 1;>return result;>function isProbablePrime(n, k) if (n let d = n - 1;let r = 0;while (d % 2 === 0) outerLoop: for (let i = 0; i < k; i++)