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