Naar inhoud springen

Priemtest van Fermat

Uit Wikipedia, de vrije encyclopedie

De priemtest van Fermat is een probabilistische methode om te controleren dat een getal een priemgetal is. De methode geeft geen uitsluitsel, maar alleen een indicatie dat het waarschijnlijk is dat het een priemgetal is.

De test is gebaseerd op de kleine stelling van Fermat. Voor een priemgetal en geldt:

Om te testen of een getal priem is, kiest men willekeurige getallen en gaat na of de kleinse stelling van Fermat daarvoor geldt. De vergelijking geldt voor alle priemgetallen, dus als het niet geldt voor een zekere waarde van , is een samengesteld getal. Als er veel waarden van zijn waarvoor de vergelijking wel geldt, kan men zeggen dat waarschijnlijk een priemgetal is, of een pseudopriemgetal.

Aangezien willekeurig is gekozen, kan het zijn dat voor geen enkele gekozen de vergelijking niet geldt. Is een samengesteld getal, dan wordt elke waarvoor:

een Fermat-leugenaar genoemd. Kiest men zodanig dat:

dan wordt een Fermat-getuige genoemd van het feit dat een samengesteld getal is.

Stel dat we willen bepalen of een priemgetal is. Kies een willekeurige 1 ≤ < 221 van  = 38. Controleer de bovenstaande vergelijking:

Ofwel 221 is priem, ofwel 38 is een Fermat-leugenaar. Daarom kiezen we een andere van 26:

Dus is 221 samengesteld en was 38 inderdaad een Fermat-leugenaar.

Het algoritme kan in pseudocode als volgt worden geschreven:

Invoer: n > 1, waarvan getest moet worden of het al dan niet priem is; k, een geheel getal, dat de nauwkeurigheid van de test bepaalt
Uitvoer: samengesteld als n samengesteld is, anders is mogelijk priem. 
herhaal k keer:
   neem een willekeurige a uit (1, n−1]
   als ggd(a,n)  1, dan uitvoer samengesteld
   als an−1 1 (mod n), dan uitvoer samengesteld
uitvoer mogelijk priem.
  • De priemtest van Fermat is niet waterdicht. Een belangrijk probleem voor de test wordt gevormd door een speciaal soort samengestelde getallen, de carmichael-getallen. Dit zijn de samengestelde getallen met de eigenschap dat is voor elke met ggd(,) = 1. Tevens geldt dat elke vermenigvuldiging van zelf ook een pseudopriemgetal is. Er is een oneindig aantal originele carmichael-getallen.[1]
  • Wanneer een samengesteld getal is, dat geen carmichael-getal is, dan geldt dat ten minste de helft van alle
Fermat-getuigen zijn.
Bewijs 

Laat de Fermat-leugenaars zijn en een Fermat-getuige. Dan geldt voor dat:

Dus geeft elke een getal , dat ook een Fermat-getuige is. Oftewel geeft elke Fermat-leugenaar een Fermat-getuige, dus is het aantal Fermat-getuigen groter dan of gelijk aan het aantal Fermat-leugenaars. Hiermee volgt dat wanneer samengesteld en geen carmichael-getal is, dat ten minste de helft van alle Fermat-getuigen zijn.