Hallo zusammen,
Aufgabe ist es, vom Benutzer des Programms eine Zahl einzulesen, welche anschließend dahingehend geprüft werden soll, ob sie prim ist, oder nicht. So sollte der Programmablauf sein:
Dies wäre mein Lösungsvorschlag (mit Kommentar):
Er tut zwar soweit das, was er tun sollte, aber irgendwie beschleicht mich das Gefühl, dass das nicht schön ist, wie ich es gelöst habe. Habt ihr Verbesserungsvorschläge oder würdet ihr sagen, es passt so?
Danke schon mal!
Aufgabe ist es, vom Benutzer des Programms eine Zahl einzulesen, welche anschließend dahingehend geprüft werden soll, ob sie prim ist, oder nicht. So sollte der Programmablauf sein:
Code:
Zahl: 17
17 ist prim.
Dies wäre mein Lösungsvorschlag (mit Kommentar):
Java:
import Prog1Tools.IOTools;
public class prim {
public static void main() {
int eingabe;
int n;
eingabe = IOTools.readInteger("Ihre Zahl: "); //Zahl wird eingelesen
if (eingabe <= 0){
System.out.println(eingabe + " ist eine ungültige Eingabe!"); //Nur für positive Zahlen
}
else if (eingabe == 1) {
System.out.println(eingabe + " ist nicht prim!"); //1 ist per definitionem keine Primzahl
}
else {
for(n=eingabe-1; n > 1; n--) {
if (eingabe % n == 0) {
System.out.println(eingabe +" ist nicht prim!"); //Lässt sich die eingegebene Zahl ohne Rest durch eine Zahl, die nicht sie selbst und nicht 1 ist, teilen, so ist sie keine Primzahl!
break; //Ist die Zahl keine Primzahl, so kann die Schleife beendet werden.
}
else if (n==2 && eingabe % n != 0) { //Ist die Zahl auch nicht ohne Rest durch 2 teilbar, so ist sie prim.
System.out.println(eingabe + " ist prim!");
}
else {
continue; //eigentlich unnötig, da Schleife eh weiterlaufen würde.
}
}
}
}
}
Er tut zwar soweit das, was er tun sollte, aber irgendwie beschleicht mich das Gefühl, dass das nicht schön ist, wie ich es gelöst habe. Habt ihr Verbesserungsvorschläge oder würdet ihr sagen, es passt so?
Danke schon mal!