Přejít na hlavní obsah

Jak definovat prvočísla v JavaScriptu

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:
24
36
58

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:

  1. 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.
  2. 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.
  3. 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++)