Ausgabe von Primzahlen, Programm läuft nicht richtig

orest90

Grünschnabel
Hallo zusammen,

Ich versuche mich gerade etwas mit C vertraut zu machen und habe das Problem, das ich den Fehler in meinem Programm nicht finde.

Die Aufgabe ist: Es soll im Programm eine Zahl eingegeben werden und es sollen genau so viele Primzahlen ausgegeben werden, die der Zahl entsprechen. Beispiel:

Wie viele Primzahlen sollen berechnet werden: 5
1. Primzahl: 2
2. Primzahl: 3
3. Primzahl: 5
4. Primzahl: 7
5. Primzahl: 11

Der Algorithmus müsste eigentlich stimmen, auch wenn ich ewig daran gesessen hab :) Ging auch nur mit einem Programmablaufplan. Vielleicht hab ich es nicht richtig umgesetzt oder ich bin noch nicht so weit für die Aufgabe, deshalb brauch ich Hilfe.

Das ist der Plan:

EDIT: Code entfernt weils ne Hausaufgabe ist und ich keinen ärger haben will ^^

Ich hoffe ihr könnt mir helfen oder mir zumindest einen Tipp geben.
 
Zuletzt bearbeitet:
Wo ist denn der Fehler, was funktioniert nicht?
Ich rate dir außerdem bessere Variablennamen zu geben ;)
Denn dadurch dein aktueller Code ist nicht besonders lesbar.

Du kannst folgende Funktion nutzen, um zu prüfen, ob es sich um eine Primzahl handelt:
C++:
bool IsPrime(int i)
{
  int Divisor = 2;
  for (Divisor=2; Divisor<i; Divisor++)
  {
    if (0==i % Divisor)
    {
      return false;
    }
  }
  return true;
}
Wenn die Zahl i durch irgendeine Zahl (2<x<i, in for-Schleife) restlos teilbar (i%Divisor==0) ist, dann ist es keine Primzahl mehr, also wird abgebrochen.
 
Der Fehler liegt eigtl darin, dass wenn ich eine Zahl eingebe, nichts Ausgegeben wird. nur wenn ich einen buchstaben eingebe, kommt, dass es eine falsche eingabe ist, wie in der äußesten if-anweisung auch verlangt. ich veränder mal die variablennamen, bin selbst schon ins stocken gekommen deswegen.

Eine Frage hätte ich zum return, wohin gibt es denn true/false zurück?
 
Ich habs jetzt!

Der Fehler ist, dass ich bei der Modulefrage nicht den Teiler, sondern einfach nur 2 geschrieben hatte ^^ Danke für den Tipp mit der Umbenennung der Variablen, habs dadurch gleich gesehen!
 
Danke für den Tipp mit der Umbenennung der Variablen, habs dadurch gleich gesehen!
Ja, man sollte immer aussagekräftige Namen vergeben ;)

Eine Frage hätte ich zum return, wohin gibt es denn true/false zurück?
Naja, wenn du die Funktion aufrufst, z.B:
C++:
bool Value = IsPrime(2); // ergibt true

bool Value2 = IsPrime(4); // ergibt false

PS: Bist du (orest90) auch ich_wieder3e?
 
Zurück