输出100到200个素数问题

#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;
}

```