Primzahlen errechnen
-
ich habe mir einen Code geschrieben, der Primzahlen berechnet. Leider stürzt nun das Programm immer wieder ab. Warum?
#include <iostream> using namespace std; int main(); ///////////////////////////////////////////////////////////// int aZahl; //Die aZahl bedeutet aktuelle Zahl und wird in jedem schleifendurchgang einmal erhöht int Primzahlen[1000]; //1000 Speicherplätze für Primzahlen int alle = 0; //wird dazu benutzt, in einer For - Schleife in der Primzahlen[] alle abzuklackern int primzahlFrage = 0; /////////////////////////////////////////////////////////////// main() { //die Vorarbeit, alle primzahlenspeicher auf 0 zu setzen! int leer = 0; for(;leer<100;) { Primzahlen[leer] = 0; leer++; } /////////////////////////////////////////////////////////// Primzahlen[0] = 2; //Die erste Primzahl! also aZahl == 2 aZahl = 2; while(Primzahlen[100] == 0) //wenn die 1000ste nicht besetzt ist, dann... { //jetzt kommt die eigentliche arbeit alle = 0; for(;alle < 100;) { if ((aZahl % Primzahlen[alle]) == 0) { //nun ist es keine Primzahl primzahlFrage = 1; //ist es eine Primzahl? //wenn primzahlFrage == 1, dann keine Primzahl //wenn primzahlFrage == 2, dann Primzahl break; //schleife wird beendet, da es keine Primzahl ist } if (Primzahlen[alle] == 0) //wenn es zu einer nicht angetanenen dran ist { primzahlFrage = 2; //jetzt ist es eine Primzahl! break; } alle++; } if (primzahlFrage == 2) //wenn es eine Primzahl ist... { Primzahlen[alle] = aZahl; //neue Primzahl wird zugewiesen... cout << Primzahlen[alle] << "\n"; //und hingeschrieben... } primzahlFrage = 0; //...weil jetzt nicht koordinierbar... alle = 0; aZahl++; } cin.get(); return 0; }
-
#include <iostream> using namespace std; int main(); ///////////////////////////////////////////////////////////// int aZahl;//wieso global? int Primzahlen[1000];//wieso global? int alle = 0;//wieso global? int primzahlFrage = 0;//wieso global? main() { int leer = 0;//kann in die for anweisung for(;leer<100;)//du hast 1000 elemente nicht 100 { Primzahlen[leer] = 0; leer++;//du benutzt ne forschleife, du kannst das auch ruhig in die for anweisung stecken } Primzahlen[0] = 2; aZahl = 2; while(Primzahlen[100] == 0)//schon wieder steht hier nicht 1000 { alle = 0;//kann in die nächste for anweisung als erstes argument for(;alle < 100;)//1000 nicht 100 { if ((aZahl % Primzahlen[alle]) == 0) { primzahlFrage = 1;//wieso? den wert benutzt du garnicht break; } if (Primzahlen[alle] == 0)//sinn? { primzahlFrage = 2; break; } alle++;//kann auch in die for anweisung } if (primzahlFrage == 2)//wieso packst du das nicht direkt in die for schleife? { Primzahlen[alle] = aZahl; cout << Primzahlen[alle] << "\n"; } primzahlFrage = 0; alle = 0; aZahl++; } cin.get(); return 0; }
-
bane4 schrieb:
Leider stürzt nun das Programm immer wieder ab. Warum?
Weil modulo Null genausowenig erlaubt ist wie geteilt durch Null.