#include <stdio.h>
int main()
{
int i,j;int n=0;int y=2;
for ( i = 101; i < 200; i++)
{
for (int j = 2; j <=i; j++)
{
if (i%j==0)
{
y=1; break;
}
}
if (y==2)
{
printf("%d ",i);
n++;
}
}
printf("\n%d",n);
}
观众老爷们,帮忙看看为什么这个方法不行啊孩子要疯了
需要改两个地方,如注释所示:
#include <stdio.h>
int main()
{
int i,j;
int n=0;
int y=2;
for ( i = 101; i < 200; i++)
{
y = 2; //每次判断i是否为质数都需要把y重置为2,不然找到第一个合数以后y就一直是1
for (int j = 2; j <i; j++) //这里循环结束条件应该是j<i,所有的整数都可以被自身整除
{
if (i%j==0)
{
y=1;
break;
}
}
if (y==2)
{
printf("%d ",i);
n++;
}
}
printf("\n%d",n);
return 0;
}
y=2放到第一个循环里。判断素数是<不是小于等于。