Eine for-Schleife mit if else drinnen im if Teil weiterführen...



  • Hey Leute ich habe ein Frage und zwar hab ich zwei for-Schleifen, in der einen for schleife habe ich eine if else abfrage eingebaut, jetzt möchte ich, dass beim if Teil, wenn dieser erfülllt ist, das Programm mit der for schleife weitermacht,kann mir jemand sagen, wie ich das hinbekomme? Also da wo jetzt continue steht sollte er wieder in die zweite for schleife springen...
    Danke schonmal 😉
    Gruß

    Maxi

    #include <stdio.h>
    #include <windows.h>
    int main(void)
    {
    	int n,t, prim;
    	for (n = 2; n <= 10000; n = n+1)
    	{
    		for (t = 2; t <= n-1; t=t+1)
    	{
    	prim = n%t;
    
    	if (prim!=0)
    	{
    -->	continue;      <--
    	}
    	else
            {
    	printf("%d\n",n);
    	break;			
    }
    }
    }
    return 0;
    }
    

    /edit pumuckl: cpp-Tags, demnächst bitte selbst machen!



  • Was macht es denn mit continue?



  • Also das hab ich nur reingeschrieben weil ich das irgendwo gelesen hab, aber er spuckt mir nur die zahlen bis 10000 aus...



  • max.mitl schrieb:

    Also das hab ich nur reingeschrieben weil ich das irgendwo gelesen hab, aber er spuckt mir nur die zahlen bis 10000 aus...

    Alle? Wo sollte sonst etwas ausgegeben werden?



  • Also bei mir gehts los ab 9666...
    Also der Sinn von dem Programm sollte eigentlich sein, dass er mir alle Primzahlen am Bildschirm ausgibt und in der ersten schleife von 2 bis 10000 geht und in der zweiten von 2 bis n-1 und nun is es so, wenn die zahl n durch t teilbar ist, dann ist es keine Primzahl und wenn schon, dann nicht, aber irgendwie hab ich da wohl nen Fehler eingebaut....



  • Such mal nach "Primzahl" hier in diesem Subforum - es gibt einige Dutzend Beiträge dazu (und entsprechend viele Lösungen - dann siehst du deinen Fehler!).



  • max.mitl schrieb:

    Also bei mir gehts los ab 9666..

    Mit dem continue?



  • Ja mit dem continue...
    Ich weiß ja nichmal ob das stimmt, ich denk mal das programm an sich so sollte ja passen, ich weiß halt nur nich, wie ich dem sagen soll, dass er bei continue mit der zweiten schleife weitermacht...



  • Wenn ich deinen Code mit continue nehme erhalte ich folgende Ausgabe:

    4
    6
    8
    9
    10
    12
    14
    15
    16
    18
    20
    21
    22
    
    usw.
    

    Vielleicht solltest du dir die gesamte Ausgabe ansehen und nicht nur die letzten Zeilen? Man könnte auch erst nur bis 100 zählen ...



  • In deinem Quellcode wird jede Zahl die als Nicht-Primzahl identifiziert wird ausgegeben, irgendwie nicht das was du wolltest.
    Aber davon abgesehen sehe ich immer wieder, dass Leute ihre Standard For-schleife hinschreiben und erst dann überlegen was pssieren soll. So auch hier.
    Deine Primberechnung ist doch eigentlich Teil deiner Laufbedingung, ist die Schleife fertig kannst du abhängig von diesem Wert bestimmen ob du nü eine Primzahl hast oder nicht

    #include <stdio.h> 
    #include <windows.h> 
    int main(void) 
    { 
    int n,t, prim; 
    for (n = 2; n <= 10000; n = n+1) 
    { 
         for (t = 2; t <= n-1 &&  n % t; t=t+1) 
         ;
         if(t >= n-1)  // Groeser gleich für den Spezialfall n = 2, 2 ist ja auch ne primzahl
              printf("%d\n",n);
    } 
    return 0; 
    }
    


  • Vielen Dank für die Hilfe!
    Dass ich da den grundäzlichen Fehler drinhatte hab ich bemerkt gehabt aber auf die Lösung wär ich nie gekommen, funktioniert jetzt einwandfrei! Danke!


Anmelden zum Antworten