Primzahlen auslesen funktioniert nur bis 100



  • Hallo,
    Ich muss für meine Uni ein C++-Programm schreiben mit dessen Hilfe man die Primzahlen bis zu einem selbst gewählten Endpunkt berechnen lassen. Das Programm funktioniert soweit auch gut, aber sobald man als Endpunkt Zahlen wählt die größer als 100 sind wird das Programm einfach ohne Ausgabe beendet.

    #include <iostream>
    using namespace std;
    int main(int argc, char** argv){
    	int n;
    	cout<<"Geben Sie eine Zahl an bis zu der Sie auf Primzahlen testen moechten: "<<endl;
    	cin>>n;
    	bool isPrime[n];
    
    	int i=2;
    
    for(i=0;i<n;i++){
    	isPrime[i]=true;}
    
    for(i=2;i<n;i++)
    {
    
    	if(isPrime[i]==true)
    	   {
    	   int j;
    	   int d=0;
    	     for(j=2;d<n;j++)
    	        {d=j*i;
    	         isPrime[d]=false;
    	        }
    	   }
    }
    
    int y;
    for(y=0;y<=n;y++)
            {
    	if (isPrime[y]==true)
                   {
    		cout<<y<<", ";
    	        }
            }
    
    return 0;
    }
    

    Wahrscheinlich ist der Fehler eh ganz offensichtlich und ich bin einfach betriebsblind. Aber falls jemand einen Fahler entdecken sollte wäre das sehr nett mir den aufzuzeigen 🙂



  • Einmal hätte doch gereicht...



  • Dadurch, dass du d mit 0 initialisierst und erst innerhalb der j-Schleife berechnest, wird diese Schleife auf jeden Fall einmal ausgeführt, auch wenn d schon beim ersten Durchlauf zu groß wäre.

    Initialisiere d mit 2*i, nicht mit 0.


  • Mod


Log in to reply