Primzahlen
Prüft, ob eine eingegebene Zahl eine Primzahl ist — und listet andernfalls alle gefundenen Teiler auf.
Dieses Script prüft eine beliebige Zahl darauf, ob sie eine Primzahl ist. Eine Primzahl ist eine natürliche Zahl größer als 1, die nur durch 1 und durch sich selbst teilbar ist — die Reihe beginnt mit 2, 3, 5, 7, 11, 13. Ist eure Zahl keine Primzahl, sagt euch das Script nicht nur „nein", sondern listet gleich alle gefundenen Teiler auf.
Die Bedienung ist einfach: Zahl ins Feld eintragen (das Beispiel 97 ist vorausgefüllt), auf „Prüfen" klicken, Ergebnis lesen. Erlaubt sind ganze Zahlen ab 2 — bei allem anderen meldet sich das Script mit einem freundlichen Hinweis. Bei sehr großen Zahlen kann die Prüfung einen Moment dauern, weil das Script der Reihe nach alle möglichen Teiler durchprobiert.
Primzahlen sind übrigens mehr als eine Schulbuch-Kuriosität: Auf ihnen beruht ein großer Teil der modernen Verschlüsselung. Verfahren wie RSA nutzen aus, dass es sehr leicht ist, zwei große Primzahlen zu multiplizieren, aber sehr schwer, das Produkt wieder in seine Primfaktoren zu zerlegen.
Rund um das Thema haben wir noch mehr im Archiv: Primzahlen 2 lässt die Primzahlenreihe von alleine durchlaufen, das Script Primzahlen innerhalb eines Wertebereichs findet alle Primzahlen zwischen zwei Grenzen, die Primfaktorzerlegung zerlegt eine Zahl in ihre Primfaktoren, und Teiler einer Zahl zeigt euch sämtliche Teiler inklusive Primzahl-Info.
Bei sehr großen Zahlen kann die Prüfung einen Moment dauern.
So funktioniert das Script
Das Script hat drei Abschnitte: Es liest die Zahl aus dem Eingabefeld und prüft sie auf Gültigkeit, dann sucht es in einer Schleife nach Teilern, und am Ende gibt es das Ergebnis aus. Alles liegt in einer sofort ausgeführten Funktion, damit nichts mit anderen Scripts auf der Seite kollidiert.
const zahl = Number(document.getElementById("prim-zahl").value);
if (!Number.isInteger(zahl) || zahl < 2) {
ausgabe.textContent = "Bitte gebt eine ganze Zahl ab 2 ein.";
return;
}
Number() wandelt den Text aus dem Eingabefeld in eine Zahl um. Number.isInteger() prüft anschließend, ob es sich um eine ganze Zahl handelt — bei leerem Feld oder Kommazahlen ergibt die Primzahlfrage keinen Sinn. Zahlen unter 2 werden ebenfalls abgefangen, denn Primzahlen sind per Definition erst ab 2 definiert (die 1 gilt ausdrücklich nicht als Primzahl). Im Fehlerfall erscheint eine Meldung und return beendet die Funktion.
const teiler = [];
for (let i = 2; i <= zahl / 2; i++) {
if (zahl % i === 0) {
teiler.push(i);
}
}
Das ist der Kern: die sogenannte Probedivision. Die Schleife probiert alle Kandidaten i von 2 bis zur Hälfte der Zahl durch — ein größerer Teiler als die Hälfte kann (außer der Zahl selbst) nicht existieren. Der Restwert-Operator % (sprich „Modulo") liefert den Rest einer Division: Ist zahl % i gleich 0, geht die Division glatt auf, und i ist ein Teiler. Jeder Fund wandert mit push() in das Array teiler — das ist die moderne Variante der Textverkettung, mit der das Original-Script seine Teilerliste zusammenbaute.
if (teiler.length > 0) {
ausgabe.innerHTML = zahl + " ist <strong>keine Primzahl</strong>, da teilbar durch " +
teiler.join(", ") + ".";
} else {
ausgabe.innerHTML = zahl + " ist eine <strong>Primzahl</strong>!";
}
Nach der Schleife genügt ein Blick auf die Länge des Arrays: Wurden Teiler gefunden, ist die Zahl keine Primzahl, und join(", ") verbindet alle Teiler zu einer hübsch kommagetrennten Liste. Blieb das Array leer, ist die Zahl prim. Die Ausgabe landet per innerHTML in der Ergebnisfläche — das alte Script benutzte dafür noch störende alert()-Fenster.
document.getElementById("prim-pruefen").addEventListener("click", pruefen);
Zum Schluss wird die Funktion pruefen() mit dem Knopf verknüpft: addEventListener("click", …) führt sie bei jedem Klick aus. Das Script steht dafür unter dem Formular, damit Eingabefeld und Knopf bereits existieren.
Zum Anpassen: Die Meldungstexte könnt ihr frei umformulieren. Wer nur ein Ja/Nein braucht, kann die Teilerliste weglassen — und die Schleife dann schon bei i * i <= zahl statt bei der Hälfte abbrechen lassen, das macht die Prüfung großer Zahlen erheblich schneller (mehr als die Wurzel der Zahl muss man für die reine Primzahlfrage nämlich nicht absuchen).
Script für die eigene Homepage
Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.
Mehr aus der Kategorie Mathematik
-
5 Zahlen
-
Altersberechnungen
-
Anzahl der Stellen von Potenzen kalkulieren
-
Barrel in Liter
-
Beliebige Wurzel ziehen
-
Binomialverteilung
-
Collatz Problem
-
Denk Dir eine Zahl
-
Dezimalbruch
-
Dezimalzahl in Binärzahl umwandeln
-
Die Kamelhändler
-
Downloadzeit-Rechner
-
Drehender Kreis 1
-
Drehender Kreis 2
-
Drehender Kreis 3
-
Dreiecksrechner
-
Dreisatz
-
Dreisatz antiproportional
-
Einfacher Euro-Rechner
-
Fakultät berechnen
-
Fakultätsrechner
-
Fibonacci Reihe berechnen
-
Fibonacci-Zahlen
-
Flächenberechnung / Dreieck
-
Flächenberechnung / Kreis
-
Flächenberechnung / Parallelogramm
-
Flächenberechnung / Rechteck
-
Flächenberechnung / Trapez
-
Gedanken lesen
-
Geschwindigkeitsmesser