#include
#include
int main()
{
int i,j,k;
scanf("%d",&i);
for(j=1;j<=i;j++)
{
for(k=1;k<j;k++)
{
if(j%k==0)
continue;
else goto anwser;
}
anwser: printf("%d",j);
}
return 0;
}
你这肯定不对,你可以自己看看,当i输入8的时,当k=8是,8%6就不等于0
int main()
{
int i,j,k;
scanf("%d",&i);
for(j=1;j<=i;j++){
for(k=2;k<j;k++){
if(j%k==0) break;
}
if(j==k) printf("%d",j);
}
return 0;
}
里面的这个for循环的作用是判断j是否是素数,但是像你这样写的话,逻辑就成了:从 k=1 开始,如果 j 不能被 k 整除,那么就 print j,这个逻辑明显是不对的。
可以这样改:
for(k=2;k<= sqrt(j); k++) //判别j是否为素数,只需使2~根号j之间的每一个整数去除
{
if(j%k==0)
{
break; // j 不是素数
}
if(k == sqrt(j)) // 没有 k 可以整除 j
{
printf("%d是素数 ",j);
}
}