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

Mijn tante Timmy had een klein boekje met wiskundige aardigheden. Bijna aan het einde was een paragraaf getiteld Wunderzahl 142857.
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)

Opmerking 3: Het aantal cijfers van het Wunderzahl is 1 minder dan het bijbehorende priemgetal.
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:
    1. 3 is het enige priemgetal dat getal genereert met lengte 1.
    2. 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

Opmerking 6: Samenvatting van de berekening en leeswijzer van onderstaande tabel

  • 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.

# cijferspriemgetallen
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