Konsten att beräkna primtal

Upptäckter med datorn — 2
Konsten att beräkna primtal
LENNART RÅDE
Primtalen har alltid fängslat såväl professionella matematiker som matematiska
amatörer. Det skriver Lennart Råde i sin andra artikel i vår Nämnarenserie om
Upptäckter med datorn.
Följ med och läs om de naturliga talens byggstenar.
Inledning
Sådana naturliga tal som 17 och 1 777 är primtal medan t ex 63 och 987 är sammansatta tal,
ty 63 = 3 • 3 • 7 och 987 = 3 • 7 • 47. Ett annat
exempel på ett primtal är
2127 - 1 = 170 141 183 460 469 231 731 687 303 715 884 105 727 medan däremot
2 1 3 5 - 1 = 7 • 31 • 73 • 151 • 271 • 631 • 23 311 • 262 657 • 348 031 • 49 971 617 830 801.
är ett sammansatt tal. Primtal är alltså naturliga
tal, som är delbara bara med sig själva och med
1.
Primtalen tjänar som ett slags byggnadsstenar
för de naturliga talen: varje sammansatt tal kan
på ett entydigt sätt skrivas som en produkt av
primtalsfaktorer. Primtalen har alltid fängslat
såväl professionella matematiker som matematiska amatörer. Redan Euklides gav ett vackert
bevis för att det finns oändligt många primtal och
Erathostenes, som levde 276—194 f Kr beskrev en
mycket användbar metod att bilda följden av
primtal. Vi ska längre fram berätta om den metoden.
Datorer har visat sig vara ett utmärkt hjälpmedel vid studium av primtal. T ex används datorer
i jakten på stora primtal. Det kan nämnas att det
för närvarande största kända primtalet är 2132049 - 1.
Det upptäcktes år 1984 av David Slowinski,
känd primtalsjägare, med en Cray XMP dator.
Jag ska här behandla några aktiviteter, som har
anslutning till primtal.
Är X primtal
Flödesdiagrammet i figur 1 beskriver ett datorprogram i BASIC, som kan användas för att
pröva om ett givet tal X är ett primtal. Enligt
detta program undersöks i tur och ordning om
det givna talet X är delbart med 3, 5, 7 osv fram
till x dvs med alla udda tal, som är högst lika
med x. Egentligen räcker det att pröva om x är
delbart med något primtal, som är högst lika med
x, men det kräver att datorn har tillgång till
dessa primtal.
Ett program enligt figur 1 fungerar hyggligt för
måttligt stora tal x men kräver mycket lång tid för
stora x. En programmerbar miniräknare, som
programmerats med ett program enligt figur 1,
behövde 18 sekunder för att konstatera att
100 537 är ett primtal och för talet 1 000 000 579,
som också är primtal, behövdes hela 1 286 sekunder. Programmet kan göras snabbare på olika
sätt men det går vi inte in på här.
Primtalstvillingar
Det inses lätt att två på varandra följande naturliga tal inte båda kan vara primtal. Ett av talen
måste ju vara jämnt och alltså delbart med 2.
Däremot så kan två på varandra följande udda
naturliga tal vara primtal. Så är t ex fallet med 17
och 19. Sådana talpar kallas primtalstvillingar.
Med avseende på dessa föreligger ett berömt olöst
matematiskt problem. Vi nämnde förut att redan
Euklides visat att antalet primtal är oändligt. Att
det också finns oändligt många primtalstvillingar
är nog talteoretikerna eniga om, men ännu har
ingen verkligen lyckats bevisa att så är fallet.
Flödesdiagrammet i figur 2 beskriver ett datorprogram i BASIC för beräkning av följden av
primtalstvillingar. Så gör också programmet i
figur 3 men på ett betydligt smartare sätt, varvid
följande utnyttjas.
Varje primtal ges av någon av formlerna 6n - 1
och 6n + 1. Det inses av att varje naturligt tal ges
av någon av formlerna 6n, 6n ± 1, 6 n ± 2 och
6 n ± 3. Men tal enligt formlerna 6n, 6 n ± 2 och
6n ± 3 kan ju inte vara primtal. De är nämligen
delbara med 2 eller 3. Detta utnyttjas i det datorprogram, som beskrivs i figur 3. Observera att
enligt detta program så prövas samtidigt om x
och x + 2 är primtal.
Erathostenes såll
Erathostenes var verksam vid det i antiken berömda biblioteket i Alexandria. Han är också
känd för sin förbluffande noggranna beräkning
av jordens omkrets. Han uppskattade den med
hjälp av latitudskillnaden mellan Syene och Alexandria till 37 000 km, att jämföras med det verkliga värdet 40 000 km. Se t ex Nämnaren 3/8 s 69.
Erathostenes angav en metod att bilda följden
av primtal, som allmänt kallas Erathostenes såll.
Den har blivit en viktig metod i talteroin. Metoden fungerar på följande sätt.
Skriv upp alla naturliga tal från 2 till t ex 100.
Låt nu 2 vara kvar men stryk alla multipler av
två. Sedan upprepas detta med 3 och multipler av
3. Talet 4 kan förbigås eftersom det redan är
struket. Fortsätt sedan med 5 och multipler av 5
respektive 7 och multipler av 7. De tal, som sedan
återstår är primtalen i området 1 till 100.
Flödesdiagrammet i figur 4 beskriver ett datorprogram, som bildar just följden av primtal i
området 1 till 100 med hjälp av Erathostenes såll.
För att markera att ett tal är struket används
flaggvariabler A(N), varvid A(N) = 1 anger att
talet N är struket. Programmet kan förbättras på
olika sätt och givetvis modifieras till att bestämma primtalen i ett större område.
Datoraktiviteter
Här ges nu en svit programmeringsövningar med
anknytning till primtal. Läsaren uppmanas höra
av sig till författaren med program, resultat,
observationer och kommentarer till dessa övningar. Både lärare och elever inbjuds att höra av sig.
Adressen till författaren är Matematiska Institutionen, Chalmers Tekniska Högskola, 412 96 Göteborg. Uppgifterna kan genomföras på en programmerbar miniräknare.
1. Utforma ett effektivt program för prövning av
huruvida talet X är ett primtal. Vilka år fram
till år 2000 är primtalsår?
2. Vilket är det största primtal, som din dator
kan bestämma?
3. Skriv ett program som bestämmer för vilka
positiva heltalsvärden på n, som polynomet
n2 - n + 41 antar primtalsvärden.
4. Utforma ett effektivt program för beräkning
av följden av primtalstvillingar.
5. Använd Erathostenes såll eller annan metod
för att utforma ett program, som beräknar
följden av primtal.
6. Man visar lätt att de tre naturliga talen x, x + 2
och x + 4 inte alla kan vara primtal. Hur? Det
finns alltså inte primtalstrillingar av typen
(x, x + 2, x + 4). Däremot så finns primtalstrillingar av typen
(x, x + 2, x + 6) t ex (41, 43, 47) och av typen
(x, x + 4, x + 6) t ex (37, 41, 43). Utforma
program för bestämning av följden av primtalstrillingar.
7. Utforma program för bestämning av primtalsfyrlingar av typen (x, x + 2, x + 6, x + 8). Ett
exempel är (101, 103, 107, 109).
Figur 4