Fermatův test prvočíselnosti
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]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]- ↑ 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.
- ↑ 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.
- ↑ 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]Slovníkové heslo Fermatův test prvočíselnosti ve Wikislovníku