//Dieses Programm prueft, ob es sich bei der durch den Benutzer //eingegebenen Zahl um eine Primzahl handelt. //Ausgabe: 1=>Primzahl, 0=>keine Primzahl //Initialisierung: Hole dir 4 Teller! //Tellereinventur: //Teller 1: zu pruefende Primzahl (Eingabe) //Teller 2: Kontrollteller (fuer Eingabe>1) //Teller 3: Zwischenspeicher von Teller 2 fuer Multiplikation //Teller 4: Teller 2 zum Quadrat //Benutzereingabe: //Eingabe der zu pruefenden Zahl Frag mich, wieviele Nudeln auf Teller 1 liegen sollen! //Rechenalgorithmus: Lege 1 Nudel auf Teller 2! //Eingabe von 0 oder 1 abfangen, da beides keine Primzahlen sind //und der Algorithmus bei diesen Zahlen nicht funktioniert Mache folgendes, //Wir haben Teller 2 in der Bedingung benötigt, können ihn aber //jetzt innerhalb der optionalen Anweisungen anders verwenden. nimm soviele Nudeln, wie auf Teller 2 liegen, von Teller 2, und //Tellerinventur: //Teller 2: potenzielle kleinste natuerliche Zahl groesser als die Wurzel von Teller 1 //Diese Schleife findet die kleinste natuerliche Zahl, //die groesser ist als die Wurzel der zu unterssuchenden Zahl. wiederhole folgendes, nimm soviele Nudeln, wie auf Teller 4 liegen, von Teller 4, und //Teller 2 wird in jedem durchlauf inkrementiert, um die natürlichen Zahlen zu durchlaufen. lege 1 Nudel auf Teller 2, und //Teller 2 wird auf Teller 3 kopiert, damit die Zahl der Nudeln auf Teller 2 quadriert werden kann lege soviele Nudeln, wie auf Teller 2 liegen, auf Teller 3, und //Quadriert Teller 2 durch multiplikation mit einem gleich vollen Teller; Ergebnis auf Teller 4 wiederhole folgendes, lege soviele Nudeln, wie auf Teller 2 liegen, auf Teller 4, und nimm 1 Nudel von Teller 3, solange Teller 3 nicht leer ist, solange Teller 1 nicht leerer als Teller 4 ist, und //Teller 3 und 4 koennen nach der Schleife einer neuen Aufgabe zugewiesen werden nimm soviele Nudeln, wie auf Teller 3 liegen, von Teller 3, und nimm soviele Nudeln, wie auf Teller 4 liegen, von Teller 4, und //Tellereinventur: //Teller 3:Divisor fuer Teilbarkeitstest //Teller 4:(bearbeitbare)Kopie von Teller 1 //Durch 1 sind alle Zahlen und durch 0 ist keine Zahl teilbar, //wir fangen also ab 2 an Teilbarkeit zu pruefen. //(1 Nudel wir hier auf den Teller gelegt, und eine bei der ersten Inkrementierung) lege 1 Nudel auf Teller 3, und lege soviele Nudeln, wie auf Teller 1 liegen, auf Teller 4, und //Diese Schleife Teilt die zu untersuchende Zahl nacheinander durch alle Zahlen zwischen //2 und der kleinsten natuerlichen Zahl groesser als die Wurzel dieser Zahl. //Die Schleife stoppt auch, wenn Teller 4 leer, also die eingegebene Zahl durch eine //andere Zahl außer 1 und sich selber teilbar ist. wiederhole folgendes, nimm soviele Nudeln, wie auf Teller 4 liegen, von Teller 4, und //Teller 1 wird auf Teller 4 kopiert, damit der urspruenglich eingegebene Wert erhalten bleibt. lege soviele Nudeln, wie auf Teller 1 liegen, auf Teller 4, und //Teller 3 wird in jedem durchlauf inkrementiert, um die natürlichen Zahlen zu durchlaufen. lege 1 Nudel auf Teller 3, und //Division von Teller 4 durch Teller 3; dabei bleibt der Rest auf 4 liegen. wiederhole folgendes, nimm soviele Nudeln, wie auf Teller 3 liegen, von Teller 4, solange Teller 4 nicht leerer als Teller 3 ist, solange Teller 4 nicht leer und Teller 3 leerer als Teller 2 ist, wenn Teller 1 voller als Teller 2 ist! //Teller 4 wurde nur innerhalb der optionalen Anweisung benötigt und kann nun anders verwendet werden. Nimm soviele Nudeln, wie auf Teller 4 liegen, von Teller 4! //Tellereinventur: //Teller 4: binaerer Ausgabewert //Wenn Teller 3 = Teller 2 ist, gab es keine weiteren teiler von Teller 1, //somit ist die eingegebene Zahl eine Primzahl. Mache folgendes, lege 1 Nudel auf Teller 4, wenn Teller 3 genauso voll wie Teller 2 ist! //Ausgabe: //Ausgabe des binaeren Ergebnisses Sag mir, wieviele Nudeln auf Teller 4 liegen! Bis bald!