[ Datorn i utbildningen ]

Nr 4-89

Om Mersennes tal

av Martin Fahlgren

Vasa Vuxengymnasium, Göteborg


Detta är ett redigerat utdrag ur originalartikeln, som egentligen behandlade programmering och presenterade ett program (i Modula-2) vilket beräknade tal av Mersennetyp och s k Perfekta tal (som är besläktade med Mersennetalen).


Primtal och datorer

Alltsedan urminnes tider har människan fascinerats av tal och talföljder med mer eller mindre säregna egenskaper. Vissa av dessa "magiska tal" har ett ringa talteoretiskt intresse. Detta gäller dock inte primtalen, som faktiskt intar en hedersplats inom talteorin.

Det mer vetenskapliga intresset för primtal vaknade under antiken och de flesta matematiskt intresserade har nog hört talas om Erathostenes primtalssåll och Euklides bevis för att det finns oändligt många primtal. Från denna tid och fram till idag har en lång rad matematiker (och "amatörer") kämpat med att försöka röja primtalens alla hemligheter. Den populärvetenskapliga litteraturen ger många belägg för detta - se t ex E T Bells artikel "Matematikens drottning" i band 4 av det klassiska samlingsverket "Sigma" (brukar finnas på de flesta skolbibliotek).

Var kommer då datorerna in i sammanhanget? Det är ingalunda så att deras intåg på arenan medfört något talteoretiskt "genombrott". Vad jag vet har inga fundamentala talteoretiska problem "lösts" eller "bevisats" med datorer. Däremot har de gjort det möjligt att testa talteoretiska hypoteser och tillämpa talteoretiska satser på problemställningar av en storleksordning och i en omfattning som tidigare var otänkbar.

Till de problemområden där datoranvändningen firat stora triumfer hör bestämning av primtal, liksom det besläktade problemet att finna faktorer till stora tal som inte är primtal.

Mersennetal

Mersennetalen, som uppkallats efter amatörmatematikern M Mersenne, definieras enligt 2n - 1. De har anknytningar till talteorin i allmänhet och primtalsteorin i synnerhet.

De största kända primtalen är av mersennetyp, men långt ifrån alla mersennetal är primtal. Med exponenten 4 erhålls t ex 15, som är ett sammansatt tal. Detta förhållande gäller f ö för samtliga jämna exponenter större än 2, eftersom exponenten då kan skrivas som 2j och mersennetalet faktoruppdelas enligt modellen 22j - 1 = (2j + 1)(2j - 1).

Resultatet kan generaliseras: Om exponenten är sammansatt är även motsvarande mersennetal sammansatt.

För att ett mersennetal ska kunna utgöra ett primtal måste alltså exponenten vara ett primtal. Inte heller detta villkor är dock tillräckligt. Exempelvis är 211 - 1 (= 2047) inget primtal, ty 2047 = 23*89.

Ett tag trodde man att alla mersennetal med mersenneprimtal som exponenter var primtal, vilket stämmer för 27 - 1, 231 - 1 och 2127 - 1. Eftersom 213 - 1 (8191) är ett primtal borde enligt denna hypotes också 28191 - 1 (2466-siffrigt!) vara det. Denna fromma illusion brast när man kunde undersöka saken med dator.

Flera liknande primtalshypoteser har sett dagens ljus, men samtliga har kunnat förpassas till papperskorgen. Det finns således ingen allmän tumregel eller "formel", med vilken man kan vaska fram mersenneprimtal.

Vad är det då som gör mersenneprimtalen så speciella? Jo, en viktig anledning är att det trots allt är "relativt lätt" att avgöra om ett mersennetal är ett primtal eller inte.

Bortsett från några specialfall (de tal som slutar på 0, 5 eller är jämna, liksom de vars siffersumma är jämnt delbar med 3, kan t ex inte vara primtal) finns inga "enkla" sätt att avgöra om ett godtyckligt tal är ett primtal eller inte. Även om det i det allmänna fallet finns bättre metoder än att tillgripa testdivision med samtliga primtal upp till kvadratroten ur talet, så krävs ofta ett enormt räknearbete för att kontrollera primtalsegenskapen. Om detta mindre trevliga perspektiv skriver matematikern L E Dickson (1874-1954):

För att avgöra huruvida ett tal med 15 eller 20 siffror är ett primtal eller ej, skulle all tid vara otillräcklig, hur mycket man än utnyttjade allt som redan är känt.

Även om Dicksons spådom fått stryka på foten i och med att vi med datorerna fått räkneredskap som man inte kunde drömma om för ett halvsekel sedan, kvarstår faktum att det, även med den kraftfullaste superdator till förfogande, i praktiken är ogörligt att primtalstesta tal bestående av tusentals siffror.

För mersennetal är läget annorlunda. På dessa kan man nämligen applicera ett speciellt kriterium, som amatörmatematikern E Lucas uppställde i slutet av 1800-talet:

Bilda talföljden l[0] = 4, l[i+1] = (l[i]2 - 2) MOD (2p - 1)
För p > 2 är 2p - 1 ett primtal om och endast om l[p-2] = 0, dvs om mersennetalet går jämnt upp i termen med ordningsnumret p-2.

Också denna metod kräver ett mycket stort räknearbete när vi har att göra med mersennetal som består av tiotusentals (och ännu fler) siffror, men i motsats till de algoritmer som måste användas i det allmänna fallet för att avgöra om ett tal är primtal eller inte, är den praktiskt utförbar.

Före datoråldern (dvs fram till början av 50-talet) kände man till 11 mersenneprimtal, av vilka det största var 2127 - 1 (39-siffrigt) och man visste inte om det existerade några fler primtal i denna familj. Idag (=1989, se anmärkningen nedan) är antalet 31 och det största 2216091 - 1, upptäckt 1985 med en Cray superdator (enligt 1988 års upplaga av Guinness rekordbok).


Efterskrift 1998

I originalartikeln som ovan ges i utdrag skrev jag bl a:

Ingen av oss lär hamna i "Guiness rekordbok" genom att låta en persondator stå i veckor/månader/år och tugga fram "nya" enorma mersenneprimtal, ty själva primtalstesten kräver superdatorprestanda.

Ovanstående skrevs hösten 1989 och var sant vid den tidpunkten. Idag är situationen annorlunda och tusentals persondatorer världen över är inbegripna i ett internationellt samarbetsprojekt som systematiskt söker efter mersenneprimtal.

Projektet, som kallas "The GREAT Internet Mersenne Prime Search", förkortat GIMPS, påbörjades i början av 1996 och har som målsättningen att fram till år 2000 undersöka alla intressanta exponenter upp till över 5 miljoner. Detta projekt har möjliggjorts av den snabba utvecklingen av persondatorerna i kombination med spridningen av Internet som gör det möjligt att samordna beräkningskapaciteten från tiotusentals datorer.

Uppdatering oktober 2008

GIMPS-projektet har fram till idag upptäckt 13 mersenneprimtal: 21398269 - 1, 22976221 - 1, 23021377 - 1, 26972593 - 1, 213466917 - 1, 220996011 - 1, 224036583 -1, 225964951 -1, 230402457 -1, 232582657-1, 237156667-1, 242643801-1 och 243112609-1 (det största består av nära 13 miljoner siffror!).

Tabellen nedan listar samtliga kända mersenneprimtal (46 st).

Om du vill veta mer om GIMPS och det aktuella forskningsläget kan du klicka på knappen nedan.

[Mersenne-status]

Tabell: Mersenneprimtal i storleksordning

Nr Exponenter Upptäcktsår Upptäckare
1-5 2,3,5,7,13 okänt okänt
6-7 17,19 1588 Cataldi
8 31 1750 Euler
9 61 1883 Pervouchine
10 89 1911 Powers
11 107 1914 Powers
12 127 1876 Lucas
13-14 521,607 1952 Robinson
15-17 1279,2203,2281 1952 Lehmer
18 3217 1957 Riesel
19-20 4253,4423 1961 Hurwitz & Selfridge
21-23 9689,9941,11213 1963 Gillies
24 19937 1971 Tuckerman
25 21701 1978 Noll & Nickel
26 23209 1979 Noll
27 44497 1979 Slowinski & Nelson
28 86243 1982 Slowinski
29 110503 1988 Colquitt & Welsh jr.
30 132049 1983 Slowinski
31 216091 1985 Slowinski
32 756839 1992 Slowinski & Gage
33 859433 1994 Slowinski & Gage
34 1257787 1996 Slowinski & Gage
35 1398269 1996 GIMPS/Armengaud
36 2976221 1997 GIMPS/Spence
37 3021377 1998 GIMPS/Clarkson
38 6972593 1999 GIMPS/Hajratwala
39 13466917 2001 GIMPS/Cameron
40 20996011 2003 GIMPS/Shafer
41 24036583 2004 GIMPS/Findley
42 25964951 2005 GIMPS/Nowak
43 30402457 2005 GIMPS/Cooper & Boone
44 32582657 2006 GIMPS/Cooper & Boone
45 37156667 2008 GIMPS/Hans-Michael Elvenich
46 42643801 2009 GIMPS/Odd Magnar Strindmo
47 43112609 2008 GIMPS/Edson Smith [UCLA]

Copyright © 1998 Martin Fahlgren
Deltagare i den stora via Internet organiserade sökningen efter Mersenneprimtal

[Till början av dokumentet] [Till artikelförteckningen]