Hej alle
Jeg spørger i både dk.edb.programmering og dk.videnskab med fut
til dk.edb.programmering.
Jeg kender den 'banale' måde at tjekke primtal på:
Prøv med divisorer op til og med kvadratroden af tallet. Hvis én
af dem går op, er det ikke et primtal.
Jeg skrev et program til min TI-89 til at tjekke mersenneprimtal,
og så tænkte jeg at jeg ville speede skidtet op ved at skrive det
i C på min pc. Jeg gik dog hurtigt over til Python i stedet.
Stor var min overraskelse da pc'en (på 0,9 GHz) stod og knoklede
løs på den håbløse opgave at tjekke divisorer op til 10^9 for at
kontrollere 2^61-1, mens TI-89 for længst havde meddelt at
2^107-1 var et primtal og var ved at kontrollere endnu større
potenser. Nu kikkede jeg igen. 2^127 er også et mersenneprimtal.
Findes der en hurtigere algoritme end den jeg kender? Godt nok
kan TI måske implementere en del kode i hardware, måske enda helt
nede i mikrokoden, men alligevel ...
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO:
http://fiduso.dk/