Hilfe:C-Programm tut nicht was erwartet war
-
Hallo,
ich habe vor kurzem angefangen zu programmieren und habe hier mal versucht einen Primzahlrechner zu erstellen. Hier wollte ich es so realisieren, dass man die Funktion "istPrimzahl" global oder ggf. auch in anderen Programmen nutzen kann was ich unten versucht habe.
Allerdings liefert mir das Programm dann nur einen Wert von 1981455924. Jetzt verstehe ich nicht wieso das passiert und wie ich den Fehler beheben kann.
Da das mein erster Post verzeiht mir FehlerHier der Programmcode:
#include <stdio.h> #include <stdlib.h> int zahl; int grenze=1000; int pruefzahl; int istPrimzahl(pruefzahl) { for (pruefzahl;pruefzahl <= grenze;pruefzahl++) { for(zahl = (pruefzahl-1); pruefzahl%zahl==0; zahl--) {} if (zahl == 1) return 1; else return 0; } } int main(int argc, char *argv[]) { int pruefzahl; if (istPrimzahl (pruefzahl)) printf ("%d ist eine Primzahl\n", pruefzahl); system("PAUSE"); return 0; }
-
War nicht leicht, sich Deinem Code anzuppassen.
#include <stdio.h> #include <stdlib.h> int zahl; int grenze=10; int pruefzahl; int istPrimzahl(pruefzahl) { // for (pruefzahl;pruefzahl <= grenze;pruefzahl++)//hier weg // { for(zahl = (pruefzahl-1); pruefzahl%zahl!=0; zahl--)//hier != statt == {} if (zahl == 1) return 1; else return 0; // } } int main(int argc, char *argv[]) { //int pruefzahl; //und hier hin for (pruefzahl=2;pruefzahl <= grenze;pruefzahl++)//und =2 vergessen { if (istPrimzahl (pruefzahl)) printf ("%d ist eine Primzahl\n", pruefzahl); } //system("PAUSE");//kann ich unter linux nicht so return 0; }
So läufts. Vergleiche halt genau, wo ich was verändert habe. Wirst drauf kommen, warum ich welche Änderungen machte.
Selber hätte ich es ein wenig anders gemacht: Vor allem die Variablen lokaler gemacht.
#include <stdio.h> #include <stdlib.h> int istPrimzahl(int pruefzahl) { int teiler; for(teiler=2; teiler<pruefzahl; teiler++) { if(pruefzahl%teiler==0) { return 0; } } return 1; } int main() { int grenze=10; int i; for(i=2; i <= grenze; i++) { if(istPrimzahl(i)) { printf("%d ist eine Primzahl\n", i); } } //system("PAUSE");//kann ich unter linux nicht so return 0; }
-
OK vielen Dank