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;
}
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);
}
}