Problem mit Primzahlenprogramm
-
Hallo ich bräuchte mal einen kleinen Tipp. Ich hab einen Denk-und Logicfehler.
Ich habe mir das so vorgestellt: Man gibt eine Zahl ein z.B. 4 dann wird diese Zahl wird dann in einer for-Schleife von 2-4 dividiert. Wenn kein Rest rauskommt ist es keine Primzahl da aber auch die 4 mit 3 dividiert wird kommt ein Rest raus.Somit stellen sich mir zwei Fragen. Erstens ist mein Code an sich richtig und zweitens wie kriege ich es hin, dass die Schleife unterbricht sobald kein Rest rauskommt?#include <stdio.h> int main () { int Eingabe=0; int Ergebnis=0; int Zahl =0; char Beenden; while (Beenden !='j') { // Zahl abfragen printf ("Geben sie eine Zahl ein:"); fflush(stdin); scanf("%d",&Eingabe); // Prüfen ob keine negative Zahl eingegben wurde if (Eingabe < 0) { printf ("Keine negativen Zahlen"); } for(Zahl=2;Zahl<=Eingabe;Zahl++); { Ergebnis = Eingabe%Zahl; if (Ergebnis == 0) { printf ("keine Primzahl\n"); } else if (Ergebnis != 0) { printf ("eine Primzahl\n"); } } // Abfragen ob Programm beendet werden soll printf ("Wollen sie das Programm beenden? j/n"); fflush(stdin); scanf("%c",&Beenden); } return 0; }
-
Du kannst eine Variable nehmen (z.B.
istprim
) und setzt diese vor der Schleife auf 0 und wenn du festgestellt hast, das es eine Primzahl ist setzt du sie auf 1.
Den Wert kannst du auch in der for-Schleife mit abfragen.Oder du verlässt di Schleife mit
break
Du musst an deinem Einrückungsstil arbeiten.
if (Ergebnis == 0) // Hier prüfst du ob Ergebnis == 0 ist { printf ("keine Primzahl\n"); } else // es ist nicht 0 darum der else-Zweig if (Ergebnis != 0) // Was soll das denn noch? Was soll Ergebnis denn hier noch anders sein als != 0 { printf ("eine Primzahl\n"); } }