Java Programm Primzahlen?

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.

Woher ich das weiß:Berufserfahrung – Staatlich anerkannter IT-Assistent / Servicetechniker

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

Von Experte Gehilfling bestätigt

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