Materialien zum Unterricht

Primzahlen

Ermitteln einer großen Primzahl

  1. Zufallszahl zwischen 0 und einer oberen Grenze (z.B. 100 000 000) bestimmen
  2. Wenn diese Zahl gerade ist, 1 dazu addieren.
  3. Hat diese Zahl einen Teiler zwischen 3 und der Wurzel aus der gewürfelten Zahl
  4. Wenn ja, neue Zufallszahl würfeln, wenn nein, dann ist es eine Primzahl
Es wird ein Eingabefeld für die Grenze, ein Knopf zum Starten der Funktion und ein Ausgabebereich erstellt.
Die Funktion prim() wird wie üblich im Kopf der Seite erstellt.
Die Variable gefunden dient später zum Abbruch der Suchschleife.
Die while-Schleife läuft solange, wie nichts gefunden wurde.
Als erstes wird eine Zufallszahl bis zur Maximalzahl bestimmt. Danach wird gleich angenommen, es ist eine Primzahl. Damit wird die Schleife nur einmal durchlaufen.
Zur Kontrolle wird die gewürfelte Zahl ausgegeben.
Im nächsten Schritt wird überprüft, ob die Zahl gerade ist. Für diesen Fall wird einfach 1 addiert und die Zahl ist ungerade.
Der Test läuft über die Modulo-Funktion %. Diese Funktion liefert den Rest einer Division. Modulo 2 erzeugt bei einer geraden Zahl immer 0 und bei einer ungeraden Zahl immer 1.
Es wird die obere Grenze für den Test bestimmt. Das ist die nächst höhere Ganzzahl der Wurzel der gewürfelten Zahl.
Jetzt kommt der eigentliche Prüfteil. Die gewürfelte Zahl wird zuerst auf die Teilbarkeit durch 3 geprüft. Falls Modulo-Funktion keinen Rest ergibt, ist die Zahl durch 3 teilbar und keine Primzahl.
Die Variable gefunden wird auf false gesetzt, damit die while-Schleife weiterläuft und die for-Schleife wird durch den Befehl break; abgebrochen.
Die Funktion sollt jetzt nur Primzahlen ausgeben.
Aufgabe: Gib zusätzlich zur Primzahl die Anzahl der Zufallszahlen aus, bestimmt wurden. Das entspricht der Anzahl der durchlaufenen while-Schleifen.
Aufgabe: Bestimme die Zeit, die vom Start der Funktion bis zur Ausgabe der Primzahl abläuft. Dazu wird die aktuelle Zeit zum Beginn und zum Ende der Funktion in je einer Variablen gespeichert. Beide Werte werden in Millisekunden umgerechnet, subtrahiert und ausgegeben.

zurück