#include<stdio.h>
int main()
{
int i;
int m;
int a=1;
for(i=100;i<=200;i++)
{
for(m=2;m<i-1;m++)
if(i%m==0)
break;
else
printf("%d ",i);
}
printf("\n");
return 0;
}
为什么这个程序运行后,里面的数据会重复输出,是什么原因?应该怎么改?
因为你的printf()是在第二个for循环里面用的是if-else语句,所以第二个for循环中只要i%m==0不满足,它都会输出同一个i。具体情况可以关注我,我们私信讨论,随时回复
程序修改如下
#include<stdio.h>
int main()
{
int i;
int m;
int a=1;
for(i=100;i<=200;i++)
{
int flg=1;
for(m=2;m*m<=i;m++)
if(i%m==0)
{
flg=0;break;
}
if(flg==1)
printf("%d ",i);
}
printf("\n");
return 0;
}
打印应在外部for循环中进行
正确代码如下:
```c
int main()
{
int i = 0;
int j = 0;
for (i = 100; i <= 200; i++)
{
for (j = 2; j < i; j++)
{
if (i % j == 0)
break;
}
if (j >= i)
printf("%d ", i);
}
return 0;
}
```