mal wieder Primzhalen mit dem Sieb bestimmen



  • Hallo, ich habe schon gesehen, es gibt hier mehrere threads zu.
    Ich will dieses Programm mal auf billige Weise Lösen.

    also hier mein code

    # include <stdio.h> 
    # include <conio.h> 
    
    int main (void) 
    { 
        int prim[1000]; 
        int i=1,j=1; 
    
            for (i=1;i<=100;i++) 
            {prim[i]=i;} 
    //initialisieren 
    Diese Konstruktion soll das Feld mit den zahlen von 1 bis 100 
     initialisieren.
    
    mit dieser Konstruktion möchte ich alle Zahlen streichen. 
    Während des ersten Durschlaufs hat i den Wert 2 und j den Wert 2
    J streicht dann in 2er schritten alle Vielfachen von 2. Im Zweiten Durschlauf sollen alle vielfachen von 3 gestrichen werden. I hat den Wert 3 und j wahrscheinlich den falschen wert.
    Wo genau liegt der Fehler in der Schleife.
    
    for (i=2;i<=50;i++) 
    { 
        while (j<100) 
    
            {    prim[j]=0;     
                j+=i; 
            } 
    
    } 
    
    //hier sollen dann alle Werte ausgegeben werden, die mit prim[j]=0 auf 0 gesetzt wurden
    
    }
    

    hat jemand eine Ahnung was genau an der Schleife falsch ist?



  • Ich habe die Lösung selber gefunden

    # include <stdio.h>
    # include <conio.h>
    void main ()
    
    {
    
    	const int anz=12;
    	int prim[anz];
    	int		i=0,j=2;
    
    for (i=1;i<=12;i++)
    
    	{prim[i]=i;
    	printf ("\nprim ist %i",prim[i]);
    	}
    
    	for (j=2;j<=6;j++)
    
    	{
    
    			i=j;
    
    				while (i<12)
    
    					{
    					i+=j;
    					printf ("\nI hat den wert %i",i);
    					prim[i]=0;
    					}
    				getch();
    
    	}
    
    for (i=2;i<=12;i++)
    
    	{
    	printf ("\nprim ist %i",prim[i]);
    	}
    
    }
    

Anmelden zum Antworten