今天看网课,想默写打打看判断素数的代码,结果有个数据错了,看了好久不知道我哪里出错了
就是数组下标为要判断的值,那个数组单元为1说明下标值就是素数,0就不是
图示代码
#include
#define max 15
int main(void)
{
int prime[max]={0,0,1};
int i;
int x;
for(i=2; i1;
}
for(i=2; iif(prime[i])
{
for(x=2; x*i0;
}
}
for(i=2; iprintf("%d\t",i);
}
printf("\n");
for(i=2; iprintf("%d\t",prime[i]);
}
printf("\n");
for(i=2; iif(prime[i])
printf("%d\t",i);
}
}
return 0;
}
输出结果
第17行:for(x=2; x*i<max; x++) 修改为:for(x = i; x*i < max; x++) 。
#include<stdio.h>
#define max 15
int main(void)
{
int prime[max]={0,0,1};
int i;
int x;
for(i=2; i<max; i++)
{
prime[i] = 1;
}
for(i=2; i<max; i++)
{
if(prime[i])
{
for(x=i; x*i<max; x++) //(x=2; x*i<max; x++)
{
prime[x*i] = 0;
}
}
} //修改
for(i=2; i<max; i++)
{
printf("%d\t",i);
}
printf("\n");
for(i=2; i<max; i++)
{
printf("%d\t",prime[i]);
}
printf("\n");
for(i=2; i<max; i++)
{
if(prime[i])
printf("%d\t",i);
}
return 0;
}
47行的大括号挪到23行
不知道你这个问题是否已经解决, 如果还没有解决的话: