Categorieën
programmeren wiskunde

Perfecte getallen..

In de eerste aflevering van Lewis (de sequel van de politieserie Morse) komt de fascinatie voor perfecte getallen aan bod. Het speelt zich dan ook af in Oxford. Perfecte getallen zijn gehele getallen die gelijk zijn aan de som van hun deelcijfers. Het kleinste perfecte getallen is 6, want deelbaar door 1 ,2 en 3 die opgeteld 6 zijn. Kunnen wij deze getallen vinden met een klein javascript? We gaan het op 2 manieren proberen.

We gaan ervan uit dat je een html kunt maken met een extern javascript daaraan gekoppeld. Kijk anders op https://www.w3schools.com/js/js_whereto.asp voor uitleg.

In het javascript creeren we eerst een lege lijst (met de naam “lijst”) waar de perfecte getallen in kunnen komen. De tweede variabele is een getal p, wat ons gevonden perfecte getal wordt. Telkens als we er een gevonden hebben, voegen we p aan de lijst toe en maken we p weer leeg.

Het essentiële gedeelte gebeurt in een for-loop, die je uit je hoofd moet kunnen typen. We lopen door alle getallen (van 1 tot 9999) en pèr getal, checken we door welke cijfers dat getal gedeeld kan worden. Dat doen we met een tweede, geneste for-loop :

Met de modulus (de restwaarde van een deling) kunnen we zien of i gedeeld door y een geheel getal is. Als dat zo is, tellen we y bij p op:

Tot slot, checken we of p gelijk is aan i. In dat geval is p een perfect getal! En wordt p aan de lijst toegevoegd.

In onderstaand javascript zie je het eindresultaat. Er is een functie gebruikt maar dat maakt niet wezenlijk uit. We stoppen nu bij 10000, want het vijfde perfectie getal is 33.550.336, die rekenkracht kan onze browser niet aan met dit onderstaand script. Hierna voglt een tweede poging.

See the Pen Untitled by jean francois roebers (@jeanfrancoisroebers) on CodePen.

Op de pagina van Wikipedia over perfecte getallen, staat de formule om deze te berekenen. Al rond het jaar 100 noteerde Nicomachus van Gerasa de stelling: “Als 2n-1 een priemgetal is, zijn perfecte getallen te schrijven als 2 n − 1 ( 2 n − 1 )“. Dit kunnen we nu gebruiken om het vijfde perfecte getal te vinden. We hebben in het onderstaande script een lijst gemaakt met veel priemgetallen. Voor machtsverheffen gebruiken we 2 maal **. Nu heeft de browser in heel korte tijd ook het vijfde perfecte getal gevonden.

See the Pen Vijf_perfecte_getallen by jean francois roebers (@jeanfrancoisroebers) on CodePen.

De Array met de priemgetallen is nu nog niet lang genoeg om meer perfecte getallen te vinden….

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.