Henk-Reints.nl

De volledige lijst van 150-cijferige priemgetallen

(laatste wijziging: 17 september 2008)

Om over die lijst iets zinnigs te kunnen zeggen, gaan we eerst op zoek naar het aantal priemgetallen kleiner dan of gelijk aan een of andere x. Dus, iets beter wiskundig geformuleerd: Het aantal priemgetallen p waarvoor geldt: p <= x. In de wiskunde wordt dit aantal aangeduid met de griekse letter π (pi), (maar dat heeft in deze context helemaal niets te maken met het welbekende getal π van ongeveer 3,14). Dan krijgen we dus:

π(x) = aantal priemgetallen p waarvoor geldt p <= x.

Op http://primes.utm.edu/ kun je vinden dat dit ongeveer gelijk is x/log(x), waarbij log(x) de natuurlijke logaritme is van x, dus:

π(x) =~ x/log(x)     (met de notatie "=~" bedoel ik: "is ongeveer gelijk aan").

Verder gaan we nu heel erg grofstoffelijk een schatting maken. Voor grofstoffelijk inschatwerk mag je wat mij betreft die natuurlijke logaritme in de context van dit relaas gerust vervangen door de 10-logaritme. Eigenlijk zou je die laatste met 2,3 moeten vermenigvuldigen om de natuurlijke logaritme te benaderen, maar in dit verhaal zal duidelijk worden dat dat op het eindresultaat bitter weinig effect zal hebben. Dus we doen gewoon de 10-logaritme. En die gaan we ook weer heel simpel benaderen. De 10-logaritme is gewoon het aantal cijfers waarmee je een getal schrijft. Behalve als het met een 1 of 2 begint, díe moet je dan niet meetellen. Maar in de rest van dit verhaal noem ik dat toch gewoon het "aantal cijfers". Dus 1 en 2 zijn hier nul-cijferig, 3 t/m 29 zijn 1-cijferig, 30 t/m 299 zijn 2-cijferig, etc.

Dan krijgen we:

π(x) = x gedeeld door aantal cijfers van x.

Bijvoorbeeld:

stel x = 5 miljard, een getal van 10 cijfers, dan: π(x) = 5 miljard / 10 = 500 miljoen.

Verder nog iets wat voor grofstoffelijk schatten handig is: als je twee grote getallen vermenigvuldigt is het aantal cijfers van het product gelijk aan de som van de aantallen cijfers van de factoren. Dit impliceert dus ook dat je bij delen het aantal cijfers in de noemer moet aftrekken van het aantal cijfers in de teller.

Nu willen we weten hoevel priemgetallen er zijn van 150 cijfers. Dan moeten we eerst π(x) berekenen waarbij x uit 150 negens bestaat:

x =   99999 99999 99999 99999 99999 99999 99999 99999 99999 99999
        99999 99999 99999 99999 99999 99999 99999 99999 99999 99999
        99999 99999 99999 99999 99999 99999 99999 99999 99999 99999

dan:   π(x) =~ x/150

150 is 2-cijferig, dus deze π(x) is dan grofweg een getal van 150 - 2 = 148 cijfers.

Maar nu hebben we natuurlijk te veel priemgetallen, er zitten immers ook alle priemgetallen van minder dan 150 cijfers bij, ofwel alle priegetallen tot en met 149 cijfers. Dat is dus π(y) waarbij y uit 149 negens bestaat en deze π(y) heeft dan 149 - 2 = 147 cijfers. Het aantal priemgetallen van precies 150 cijfers is dan dus iets in de orde van:

n = π(x) - π(y)

Nu heeft π(y) 1 cijfer minder dan π(x), dus π(y) is grofweg 10 keer zo klein als π(x). Dan geldt bij benadering:

π(x) - π(y) = 0,9 keer π(x)

Deze 0,9 ronden we natuurlijk onmiddelijk af (op?) naar 1, want we zijn grofstoffelijk aan het schatten. Dus het aantal priemgetallen van 150 cijfers schatten we gewoon op π(x), een getal van 148 cijfers.


Om ze allemaal te vinden moeten we van alle oneven getallen tussen


1000000000 0000000000 0000000000 0000000000 0000000000
0000000000 0000000000 0000000000 0000000000 0000000000
0000000000 0000000000 0000000000 0000000000 0000000000
en
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999

uitproberen of ze priem zijn en dat aantal is ongeveer 10150 (uiteraard geldt hier dezelfde factor 0,9 als net hierboven en dat ronden we dus af naar 1, maar we hoeven alleen de oneven getallen te testen, dus de helft, maar die factor 1/2 laat ik verder maar weer weg, het maakt namelijk weinig uit voor de einduitkomst).

Stel dat we een computer hebben die 1 miljoen van die getallen per seconde kan testen. Dan hebben we grofweg 10150 / 1 miljoen = 10144 seconden nodig. Stel dat we een heleboel computers tegelijk aan het werk zetten, elke aardbewoner eentje, dus (afgerond naar boven) 10 miljard computers. Dan hebben we nog steeds 10134 seconden nodig om de lijst compleet te maken.

De leeftijd van het heelal sinds de Big Bang is volgens de huidige stand van de wetenschap 13,7 miljard jaar en een jaar is 31 miljoen seconden, dus de leeftijd van het heelal is 13,7 x 31 x miljard x miljoen seconden. Dat is ongeveer 4 x 1017 = 400000000000000000 seconden. Maar we hadden 10134 seconden nodig... Dus grofweg 10134 / 1017 = 10117 heelal-leeftijden. De lijst van gevonden priemgetallen is dus nog laaaaaaaang niet af!

We hebben
10000000 0000000000 0000000000 0000000000
0000000000 0000000000 0000000000 0000000000
0000000000 0000000000 0000000000 0000000000
heelallen nodig om die lijst compleet te maken!


Maar stel nu eens dat we deze priemgetallen toch allemaal zouden kennen (wat dus zéér beslist niet het geval is!!!) en dat we die lijst in een computerbestand willen zetten. Om één getal van 150 cijfers in de computer op te slaan in zogeheten binaire notatie heb je ongeveer 60 bytes nodig. Het aantal benodigde bytes in die lijst wordt dan:

π(x) maal 60

Dat is dan dus een getal van 150 cijfers.

We hebben inmiddels - zelfs ook thuis - al harddisks van een paar honderd gigabyte en voor dit verhaal zal ik uitgaan van opslag van die lijst op harddisks van elk 1 terabyte, dat is 1000 gigabyte. 12 cijfers. Het benodigde aantal harddisks voor de volledige lijst van 150-cijferige priemgetallen is dan een getal van 150 - 12 = 138 cijfers.

Let wel, dit is dus niet 138 harddisks! Het aantal disks is een getal van 138 cijfers!

Stel nu eens, heel gewaagd, dat de techniek ooit zo geavanceerd wordt dat zo'n terabyte in een kubieke millimeter past. Hoeveel ruimte hebben we dan nodig voor de opslag van alle 150-cijferige priemgetallen? Zou het heelal er groot genoeg voor zijn? Om daar achter te komen gaan we eerst eens schatten hoe groot het heelal eigenlijk is.

De afstand die het licht in een jaar aflegt heet een lichtjaar en dat is ongeveer 10 biljoen kilometer (1013 km). Volgens de huidige stand van de wetenschap is de ouderdom van het heelal 13,7 miljard jaar, dus de maximale afstand die we kunnen zien in het heelal is 13,7 miljard (13,7 x 109) lichtjaar. Daarachter zit ook nog wel een deel van het heelal, maar dat kunnen we niet zien omdat het licht ons nog niet bereikt heeft. Astronomen noemen dat de horizon.

Het voor ons zichtbare deel van het heelal is dus als het ware een bol om de aarde met een straal van 13,7 x 109 lichtjaar = 13,7 x 1022 km. (Hé, staat de aarde toch in het middelpunt van 't heelal... ;-)

Het volume van een bol is 4/3 x π x R3 (hier is π natuurlijk wél gewoon 3,141592653589793238462632383279...etc.), dus het volume van het voor ons zichtbare heelal is:

4/3 x 3,14 x (13,7 x 1022)3 km3    =    4/3 x 3,14 x 13,73   x   (1022)3 km3    =~    10000 x 1066    =    1070 km3.

Da's een 1 met 70 nullen erachter, en dan kubieke kilometers dus. Maar we hadden toch een terabyte per kubieke millimeter? Nu is 1 km = 1000 m = 1000 x 1000 mm, dus 1 km = 106 mm. Een km3 is derhalve 1018 mm3 en dat geeft dan het volgende eindresultaat:

Het volume van het heelal is 1088 mm3 ofwel

Maar hadden we niet 10138 terabyte aan 150-cijferige priemgetallen? Hoeveel heelallen zijn daarvoor nodig? Wel, gewoon 10138/1088 = 1050.

Bij een dichtheid van 1 TB/mm3 zijn voor de opslag van alle 150-cijferige priemgetallen
dus heelallen nodig.

Dat is 100 tera-tera-tera-tera-heelal...

Snap je wat ik bedoel?

Om die reden worden grote priemgetallen dus gebruikt voor data-encryptie. En tegenwoordig - bij moderne encryptiemethodes - zelfs al priemgetallen van 300 cijfers. Da's niet 2 keer zoveel, dat is 't kwadraat!

Lees hier meer over data-encryptie en hoe die priemgetallen dan gebruikt worden. Maar uh..., die priemgetallen zijn toch onbekend? Toch gewoon hier gaan lezen, daar staat 't...