Fermatův test prvočíselnosti

Z Wikipedie, otevřené encyklopedie

Fermatův test prvočíselnosti se používá k určení, zda je dané číslo prvočíslo nebo číslo složené. Patří mezi pravděpodobnostní testy prvočíselnosti a je založený na malé Fermatově větě.

Popis[editovat | editovat zdroj]

Fermatův test nepatří mezi typické pravděpodobnostní testy. Jednoznačně nerozliší prvočísla od čísel složených (to jsou tzv. Carmichaelova čísla), proto je často označován jako test složenosti.[1]

Na základě malé Fermatovy věty, je-li prvočíslo a není jeho násobek platí , nebo lze také říci, že je dělitelné číslem . Po použití obrácené implikace tohoto tvrzení je zřejmé, že existuje-li takové, že nedělí , pak musí být číslo složené.[2]

Příklad: Při zvolení ; , číslo není dělitelem čísla nebo

; , také nedělí číslo . Fermatův test potvrdil složenost čísla pro .

n je složené číslo[editovat | editovat zdroj]

Pro složené číslo a přirozené číslo , platí:

  • – číslo se nazývá Fermatův svědek složenosti čísla
  • – číslo se nazývá pseudoprvočíslo vzhledem k bázi .[2][1]

Zobecnění[editovat | editovat zdroj]

Je-li prvočíslo nebo není prvočíslo

Příklady[editovat | editovat zdroj]

Související informace naleznete také v článku Kongruence.

Zadání1: a platí pro , atd.

je prvočíslo.

Zadání2: ;

kongruence není rovna , proto číslo není prvočíslo a číslo je svědek složenosti.[3]

Test pro velká čísla[editovat | editovat zdroj]

Pro „velká“ čísla je časově náročné používat Fermatův test pro všechna čísla .

Zadání3: Je číslo prvočíslo? Lze vybrat náhodná čísla

může být prvočíslo,

může být prvočíslo,

není prvočíslo!

Algoritmus[editovat | editovat zdroj]

Fermatův test prvočíselnosti:

Vstup: liché celé číslo , parametr počet čísel .

Výstup: odpověď na otázku „je prvočíslo?“

for (i = 1; i <= t; i++)
{
    vyber náhodné int a;
    r = a*(n-1) \mod n; //RSMA 
    if (r !i = 1 ) then
    return ("složené")
    break;
}
return ("prvočíslo")

Pro testování prvočíselnosti velkého čísla se Fermatův test v praxi běžně nepoužívá. Existuje pravděpodobnost, že místo náhodného lichého celého čísla bude vygenerováno pseudoprvočíslo, tedy složené kladné celé číslo, které je chybně určeno jako prvočíslo.[1]

Reference[editovat | editovat zdroj]

  1. a b c OCHODKOVÁ, Eliška. Matematické základy kryptografických algoritmů [online]. Západočeská univerzita v Plzni: Vysoká škola báňská – Technická univerzita Ostrava, 2012 [cit. 2021-10-31]. Dostupné online. 
  2. a b MASÁKOVÁ, Zuzana. Prvočísla v akci. Rozhledy matematicko-fyzikální. 2015, roč. 90, čís. 1, s. 66–77. Dostupné online [cit. 2021-10-31]. ISSN 0035-9343. 
  3. STULÍKOVÁ, Gabriela. TESTOVÁNÍ PRVOČÍSELNOSTI [online]. Plzeň: Západočeská univerzita v Plzni, Fakulta pedagogická, 2017 [cit. 2021-10-31]. Dostupné online. 

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]