Priemgetallen berekenen met TI-basic

Bericht van dcm360 om 13-05-09, 18:20

dcm360

Beheerder

Geregistreerd sinds:
26-04-08

Laatst gezien:
Lang geleden

Wat ga je doen als je even vijf minuutjes niets te doen hebt en je hebt een rekenmachine voor je liggen? Naja, geen spelletje dus, maar ik besloot om te kijken hoe ik zo simpel en efficient mogelijk een programmaatjes kon schijven om priemgetallen uit te rekenen.
Als eerste doen we maar eens een heel erg simpele poging:

Deze gaat de getallen 1 t/m 100 langs, en kijkt dan voor alle getallen tussen I-1 en 2 of er geen kommagetal uitkomt. Komt er geen kommagetal uit, wordt de variabele P op 1 gezet en is het getal geen priemgetal.
Er zijn enkele opmerkingen te maken over deze code:

  • Het programma zoekt altijd door, ook als al duidelijk is dat het geen priemgetal is
  • Je hoeft niet te delen door alle tussenliggende getallen: Als je I deelt door een getal lager dan de wortel uit I is de uitkomst hoger dan de wortel uit I en andersom ook.
  • Het programma deelt ook door getallen die zelf geen priemgetal zijn: deze kunnen worden ontbonden in priemgetallen en zijn dus al uitgeprobeerd

Met deze punten ging ik dus aan de slag om de efficientie wat omhoog te krijgen. Het laatste punt heeft trouwens ook een naam, namelijk de zeef van Eratosthenes.
Ik kwam uit op de volgende code:

Deze doet precies hetzelfde als de code hierboven, alleen dan veel sneller omdat de punten hierboven erin verwerkt zijn (probeer maar eens t/m 1000wink ). Voor de luie mensen is de code ook hier te downloaden.

Suggesties zijn natuurlijk welkom!

[Laatst bewerkt om 06-04-19, 13:54 door een moderator]
Log in om te reageren!