问题 - 生成素数。
使用的方法 - 不使用优化的方法筛选
问题代码只生成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;
}
答案 0 :(得分:1)
for(i=2;primes[i]!=0&&i<=20;i++){
printf("%d\n",i);
}
您的primes[i]!=0
条件会在遇到非素数时导致循环终止,即&#34; 4&#34;。尝试将其分成自己的条件。
for(i=2;i<=20;i++){
if (primes[i] != 0){
printf("%d\n",i);
}
}