Java Programm Primzahlen?
Ich soll ein Programm machen, wo man eine ganze Zahl eingibt und getestet wird, ob die Zahl auch wirklich eine Primzahl ist. Dementsprechend soll ich dazu dann eine Ausgabe machen. Ebenso soll ich eine Intervallgrenze festlegen. Wie fändet ihr 500?
Das folgende Programm sollen wir mit einer while-Schleife programmieren.
Außerdem benötige ich dazu doch eine if-Anweisung stimmts?
4 Antworten
Ich kann dir jetzt nur sagen, wie ich es in C# gemacht habe. C# ist jedoch recht ähnlich vom Syntax her zu Java und das Prinzip bleibt gleich:
In einer Funktion außerhalb des Main-Programms:
public static bool IsPrimeNumber(int input)
{
for (int i = 2; i < input; i++) {
if (input % i == 0)
{
return false;
}
}
return true;
}
Und dann in der Main die Funktion so eingebunden:
for (int i = 2; i <= input; i++) {
if ((input == i) && (IsPrimeNumber(i) == true) {
Console.WriteLine(i + " ist eine Primzahl!");
} else if ((input == i) && (IsPrimeNumber(i) == false)) {
Console.WriteLine(i + " ist keine Primzahl!");
}
}
Das ganze noch in einem Try-Catch, um Eingabefehler zu filtern und die Eingabe wiederholen zu lassen.
Du benötigst keine If-Abfrage!
Hier einmal als Beispiel mit for-Schleife, das musst Du nur noch in eine While-Schleife umwandeln:
public static boolean isPrimeNumber(final int number, final int boundary) {
int i;
for (i = 2; number % i > 0 && i < number && number < boundary; ++i);
return i == number;
}
Für ...
System.out.println(isPrimeNumber(17,500));
System.out.println(isPrimeNumber(-2,500));
System.out.println(isPrimeNumber(2,500));
System.out.println(isPrimeNumber(15,500));
System.out.println(isPrimeNumber(7,500));
System.out.println(isPrimeNumber(1,500));
System.out.println(isPrimeNumber(502,500));
System.out.println(isPrimeNumber(499,500));
lautet der Output:
true
false
true
false
true
false
false
true
Grüße, Jacob
Mach doch erstmal die Eingabe und die Begrenzung .
Dann guckst Du mal im internet wie man Primzahlen lösen kann bzw wenn Du ein Verfahren kennst wende es so an .
Das ganze gießt Du dann in Code und Postest es hier . Dann können wir Helfen .
Lernen tut man irgendwie nur wenn man etwas selber macht.
Und Ja eine IF Anweisung oder ein Vergleich als Bedingung ist immer hilfreich .
Meine TIP: lerne Modulo anzuwenden .
Ja du kannst eine while Schleife verwenden, welche von 2 bis (eingegebene Zahl - 1) hochzählt und mit dem Modulo Operator % prüft ob die Zahl teilbar ist falls ja also Modulo == 0 weißt du, das es keine Primzahl ist