查找素数时的实现错误

Impelementation error in finding prime no


问题-生成质数。
使用的方法-不使用优化的 erathone 筛选。
问题代码仅生成 2 和 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);
}

您的primes[i]!=0条件将导致循环在遇到非素数即“4”时终止。尝试将其分离为自己的条件。

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