Wunderzahlen
Priemgetal (NIET 2 of 5) | ||
WELKE OPLOSSINGEN LATEN ZIEN? | ||
Als priemgetal < | dan tonen we alle N-1 oplossingen | |
Als priemgetal < | dan tonen we de eerste oplossing van iedere groep | |
Als priemgetal < | dan tonen we de eerste oplossing | |
Anders slaan we dit te grote getal over | ||
Even geduld aub, bezig met berekenen
Als je priemgetal 7 hebt ingevuld in bovenstaand tekstveld, dan zie je waarom dit een Wunderzahl is: als je het vermenigvuldigt met 2 t/m 6, dan krijg je de dezelfde cijfers, maar cyclisch verwisseld: je schuift naar rechts en zet de achterste vooraan, of andersom.
Nog een extraatje: 7 * 142857 = 999999. Wat heeft dit met 7 te maken? Welnu, 1/7 is een repeterende breuk: 0,142857142857142857......, ook te schrijven als 0,(142857).
Je begrijpt wat er gebeurt als je vermenigvuldigt. Merk op dat 7 * 0,(142857) = 0,(999999) = 0,(9) = 1. Is 142857 het enige Wunderzahl? Dat is een beetje een kwestie van definitie. Klik hier voor priemgetal 17 en scroll daarna weer naar dit punt in de tekst.
Het nieuwe Wunderzahl is 0588235294117647, 16 cijfers MAAR beginnend met een 0 (nul). Als dat laatste geen bezwaar is, dan zijn er oneindige veel Wunderzahlen. Ik vind het acceptabel. Opmerking 1: priemgetallen 2 en 5 doen niet mee.
Voor Wunderzahlen hebben we repeterende breuken nodig, maar 1/2 = 0,5 en 1/5 = 0,2 Opmerking 2: Alleen priemgetallen liggen ten grondslag aan Wunderzahlen.
Hieronder zie je verschillende breuken met 6 in de noemer. Omdat je sommige kunt vereenvoudigen, is er geen eenduidig mechanisme voor de decimale weergave.
Daar komt nog bij dat de enige 2 die NIET zijn te vereenvoudigen, pas beginnen te repeteren in het tweede cijfer achter de komma.
- 1/6 = 0,16666.. = 0,1(6)
- 2/6 = 1/3 = 0,33333.. = 0,(3)
- 3/6 = 1/2 = 0,5
- 4/6 = 2/3 = 0,66666.. = 0,(6)
- 5/6 = 0,83333.. = 0,8(3)
De oplettende lezertjes hebben het al gezien: 142857 bevat 6 cijfers en hoort bij 6; priemgetal 17 ligt ten grondslag aan Wunderzahl 0588235294117647 met 16 cijfers.
Dit is logisch als je bedenkt, dat de teller de waarden 1 t/m N-1 doorloopt. Opmerking 4: Niet alle priemgetallen leveren een Wunderzahl op. In dat geval onderscheiden we groepen.
Als er meer dan 1 groep is, dan zie een extra kolom met daarin het groepsnummer. Tellers met hetzelfde groepsnummer zijn gebaseerd op het hetzelfde getal, dat net als bij Wunderzahlen ontstaat door verschuivingen.
Als priemgetal p is verdeeld in n groepen dan zijn al die groepen even groot: (p-1)/n tellers. De getallen in alle groepen hebben (p-1)/n cijfers.
Tijd voor wat voorbeelden:
- Een aardig voorbeeld is 13 met 2 groepen van 6 cijfers
- Uitgesproken saai is 3: 2 groepen van 1 cijfers
- 11 is ook geen aanrader: 5 groepen van 2 cijfers Opmerking 5: Als de machineprecisie het toestaat, dan wordt het eerste getal ontbonden in factoren.
Bij priemgetal 7 zie je staan: Eerste getal 142857 = 3^3 * 11 * 13 * 37
De cijfers zijn hyperlinks. Klik je "13", dan zie je: Eerste getal 76923 = 3^3 * 7 * 11 * 37 (Merk op dat de voorloop-nul is verwijderd; we kijken echt naar het getal)
Zoals bekend leveren 7 en 13 getallen van 6 cijfers. Je kunt aantonen dat de priemgetallen in dit lijstje getallen leveren waarvan het aantal gelijk is aan 6 OF een deler van 6:
- 3 heeft 2 groepen van 1 cijfer. Dit is een bijzonder geval:
- 3 is het enige priemgetal dat getal genereert met lengte 1.
- De gegeneerde getallen zijn NIET deelbaar door 9. Dat is bij alle andere priemgetallen WEL het geval.
- 11 genereert 5 groepen van 2 cijfers
- 37 genereert 12 groepen van 3 cijfers
- 7 * 142857 = 13 * 076923 = 999999 = 10^6 -1 : dat hoort bij Wunderzahlen van 6 cijfers
- Andersom geldt 999999 = 3^3 * 7 * 11 * 13 * 37. Door de delers van 99999 te bepalen, vinden we alle priemgetallen die repeteren binnen 6 cijfers OF binnen een deler-van-6 cijfers; dan zijn 1, 2 of 3 cijfers.
- 10^n - 1 zijn n negens en dus ook altijd deelbaar door 9.
Omdat die factor 9 ballast is, gaan we vanaf nu werken met (10^n - 1)/9 oftewel n enen.
Voorbeeld: 111111 = 3 * 7 * 11 * 13 * 37 - Voor even getallen (n=2m) kun je nog een splitsing maken:
(10^2m - 1)/9 = ((10^m - 1)/9) * (10^m +1).
In normale mensentaal: 111111 = 111 * 1001 met
111 = 3 * 37: Dit geeft je de getallen die repeteren met 3 cijfers OF met 1 cijfer, want 1 is de enige echte deler van 3.
1001 = 7 * 11 * 13: Deze getallen repeteren met 2 of 6 cijfers, nl. (1) 6 zelf OF (2) een deler van 6, die geen deler is van 3, oftewel 2.
Deze splitsing heeft het voordeel, dat je kleinere getallen nodig hebt en dat rekent sneller - De onderstaande getallen zijn in eerste instantie gevonden met JavaScript.
Bij JavaScript zijn grotere getallen opgeslagen als reƫel (d.w.z. niet per se geheel) getal met drijvende komma. Als dat te groot wordt, dan loop je tegen de computerprecisie aan. Ik test dit door 1 op te tellen bij het getal en te checken of het nog groter wordt, of dat die 1 verloren gaat in de computerprecisie. In het laatste geval kun je stoppen met het ontbinden in factoren.
Het blijkt dat de computerprecisie een rol gaat spelen rond 9 * 10^15 = 2^53. Dat doet vermoeden dat de mantisse van de drijvende komma is opgeslagen in ongeveer 53 bits. Microsoft meldt dat ze gebruik maken van de IEEE Floating-Point Representation. Die heeft een double-precision versie met een sign bit, een 11-bit exponent en een 52-bit significand of mantisse. Dat lijkt dus mooi te kloppen.
We kunnen oneven getallen doorrekenen tot 15, maar door de eerder genoemde splitsing te gebruiken kunnen we even getallen tot 30 doorrekenen. - De tweede berekening was in Python. Gehele getallen blijven gehele getallen; Python schuift indien nodig bytes bij.
Theoretisch kun je doorgaan tot je schijf vol is, maar in de praktijk duurt het gewoon lang.
De rekentijd is evenredig met de wortel van het grootste priemgetal dat we vinden.
De langste rekentijd tot nu toe was bij 19, want het getal met 19 enen bleek een priemgetal!
Helaas bleek het bij 23 cijfers te lang te duren. Ik hoop op nog een priemgetal, maar om dat zeker te weten moet ik eerst sparen voor een snellere computer.
# cijfers | priemgetallen |
1 | 3 |
2 | 11 |
3 | 37 |
4 | 101 |
5 | 41 271 |
6 | 7 13 |
7 | 239 4649 |
8 | 73 137 |
9 | 333667 |
10 | 9091 |
11 | 21649 513239 |
12 | 9901 |
13 | 53 79 265371653 |
14 | 909091 |
15 | 2906161 |
16 | 17 5882353 |
17 Python | 2071723 5363222357 |
18 | 19 52579 |
19 Python | 1111111111111111111 Daar is-ie dan! Het eerste priemgetal na 11 dat alleen bestaat uit enen |
20 | 3541 27961 |
21 Python | 43 1933 10838689 |
22 | 23 4093 8779 |
23 | Helaas, deze duurde zelfs voor Python te lang. Zou dit wederom een priemgetal zijn met uitsluitend enen? |
24 | 99990001 |
25 Python | 21401 25601 182521213001 |
26 | 859 1058313049 |
27 Python | 757 440334654777631 |
28 | 281 121499449 |
29 Python | 3191 16763 43037 62003 77843839397 |
30 | 211 241 2161 |
31 Python | 2791 6943319 57336415063790604359 |
32 Python | 353 449 641 1409 69857 |
33 Python | 67 1344628210313298373 |
34 Python | 103 4013 2199383336 |
35 Python | 71 123551 102598800232111471 |
36 Python | 999999000001 |
38 Python | 909090909090909091 |
40 Python | 1676321 5964848081 |
42 Python | 127 2689 459691 |
44 Python | 89 1052788969 1056689261 |
46 Python | 47 139 2531 549797184491917 |
50 Python | 251 5051 78875943472201 |
54 Python | 70541929 14175966169 |
Reacties
Een reactie posten