Primzahl Prüfung durchführen

Thiese

Mitglied
Hallo,

ich sitze gerade an meinen Hausaufgaben und bin fast am Verzweifeln.

Unsere Aufgaben war ein Strucktogramm, ein Schreibtischtest und den dazugehörigen Quellcode zu entwerfen.

Das Strucktogramm
[
strucktogramm.jpg


Der Schreibtischtest sieht wie folgt aus:

Vollbildaufzeichnung%2017.10.2010%20162428.jpg


Jetzt fehlt nur noch der Quellcode, hier bin ich soweit gekommen

Java:
public class primzahlen
{public static void main(String[] args){
  int c_Argument = 5; // zu überprüfende Zahl
   int Teiler = 2;
   int rest = c_Argument % Teiler;

   while (Teiler < c_Argument){
    //anweisung;
    //aktulisierung;}
    
    if (rest == 0){
      //anweisung;
      }else {
        //anweisung;
      }
    }


  }
}

Das Problem ist, dass ich es irgendwie nicht schaffe die while-Schleife mit der IF Anweisung zusammen bekomme. Kann mir da bitte jemand helfen?
 

XHelp

Top Contributor
Naja, wenn rest == 0 ist, dann musst du "falsch" ausgeben und die Schleife beenden
Wenn der rest nicht 0 ist, dann musst du Teiler erhöhen und den Rest neuberechnen.

Dazu noch paar Sachen:
- Variablennamen werden klein geschrieben
- "rest"-Variable brauchst du nicht, das kannst du direkt in der If-Abfrage berechnen

P.S. Die Ausgabe "ist ene Primzahl" erfolgt erst nach der Schleife. Wenn die Aufgabe es so verlangt, dann ist es besser dich an dem Struktogramm zu orientieren und nicht aus der Schleife rauszugehen, sondern das Programm beenden.
 
Zuletzt bearbeitet:

Thiese

Mitglied
Vielen Dank für deine Antwort

Ich habe mal versucht das ganze umzusetzen, bekomme aber komisch Ergebnisse. Stimmt die Verschachtelung von dem IF und der WHILE Schleife?

Da kommen irgendwie komische Ergebnisse raus :-(

Java:
public class primzahlen{
  public static void main(String[] args){
    int c_Argument = 5; // zu überprüfende Zahl
     int teiler = 2;

   while (teiler < c_Argument){

    if (c_Argument % teiler == 0){
      System.out.println(c_Argument + " ist keine Primzahl");
      }else {
      System.out.println(c_Argument + " ist eine Primzahl");
      }
      
   teiler ++;
    }
  }
}
 

Thiese

Mitglied
Ahh danke für den Hinweis.

Jetzt hab ich es fast

Java:
public class primzahlen{
  public static void main(String[] args){
    int c_Argument = 5; // zu überprüfende Zahl
    int teiler = 2;

   while (teiler < c_Argument)
     {
      if (c_Argument % teiler == 0){
      System.out.println(c_Argument + " ist keine Primzahl");
      break;
     }
    teiler ++;
    }
   System.out.println(c_Argument + " ist eine Primzahl");
  }
}

Das Problem ist nur noch, dass wenn ich es mit 15 mache, dann kommt einmal es ist eine Primzahl und einmal es ist keine Primzahl.
 

XHelp

Top Contributor
Statt
Code:
break;
solltest du
Code:
System.exit(0);
nehmen. So verlangt es dein Struktogramm. Dann sollte die Lösung korrekt sein.
 

Thiese

Mitglied
Ja mit dem System.exit(0); funktioniert es perfekt.

Wenn ich es mit dem break; mache, dann kommt bei c_Argument = 15 einmal es ist eine Primzahl und einmal es ist keine Primzahl.
Und mit dem System.exit(0); funktioniert es perfekt.

Vielen Dank für die Hilfe! :)

Der Vollständigkeit hier nochmal der komplette Quellcode

Java:
public class primzahlen{
  public static void main(String[] args){
    int c_Argument = 15; // zu überprüfende Zahl
    int teiler = 2;

   while (teiler < c_Argument)
     {
      if (c_Argument % teiler == 0){
      System.out.println(c_Argument + " ist keine Primzahl");
      System.exit(0);;
     }
    teiler ++;
    }
   System.out.println(c_Argument + " ist eine Primzahl");
  }
}
 

Marco13

Top Contributor
Alternative (ohne jetzt mit ausgefeilteren Primzahltestverfahren anfangen zu wollen) :

Java:
public class Primzahlen
{
    public static void main(String[] args)
    {
        for (int i=0; i<16; i++)
        {
            check(i);
        }
    }

    private static void check(int c_Argument)
    {
        if (isPrime(c_Argument))
        {
            System.out.println(c_Argument + " ist eine Primzahl");
        }
        else
        {
            System.out.println(c_Argument + " ist keine Primzahl");
        }
    }



    private static boolean isPrime(int c_Argument)
    {
       int teiler = 2;
       while (teiler < c_Argument)
       {
           if (c_Argument % teiler == 0){
               return false;
           }
           teiler ++;
       }
       return true;
    }
}

EDIT: Wobei ... ich gerade nicht sicher bin, ob es Lehrer gibt, die so pedantisch sind, dass sie das als "nicht zum Struktorgramm passend" bezeichnen würden. Ja, Struktogramme.... so war das, damals, in den 70ern :reflect:
 

Neue Themen


Oben