Search code examples
calgorithmsieve-of-eratosthenes

Impelementation error in finding prime no



Problem-To generate prime numbers.
Approach used-Sieve of erathones without using optimisation .
Problem-Code is generating only 2 and 3.

#include<stdio.h>

int main()
{
    int i,j;
    int primes[100];
    for(i=0;i<=20;i++)
    {
        primes[i]=1;
    }

    primes[0]=0;primes[1]=1;
    for(i=2;i<=20;i++)
    {
        if(primes[i]==1)
        {
            for(j=2;i*j<=20;j++){
                primes[i*j]=0;
            }
        }
    }

    for(i=2;primes[i]!=0&&i<=20;i++)
    {
        printf("%d\n",i);
    }

    return 0;
}

Solution

  • for(i=2;primes[i]!=0&&i<=20;i++){
      printf("%d\n",i);
    }
    

    Your primes[i]!=0 condition will cause the loop to terminate once it encounters a non-prime number, namely "4". Try separating it into its own conditional.

    for(i=2;i<=20;i++){
      if (primes[i] != 0){
        printf("%d\n",i);
      }
    }