ahr123 发表于 2018-8-5 22:26:52

100到200 间的 质数显示

#include<stdio.h>
void main()
{
        int i,m;
        for(m = 100; m <= 200; m++)
        {
                for(i = 2; i < m; i++)
                {
                        {
                                if(m % i == 0)
                                break;
                        }
                        if(i = m - 1 )
            printf("%d\n",m);}
        }
}
如上所示,为什么实际运行所有的奇数出来了(如105,根据m%5,不应该break了吗),求大神指导,好人一生平安。

claws0n 发表于 2018-8-5 22:38:18

{
if (...)
}//多了不必要的大括号,造成那程序是局部的。

程序员的救赎 发表于 2018-8-5 22:38:59

break只能终止当前循环,所以每次运行break之后,回到了第一个for,然后继续运行。如果想要退出多层循环,有两种方案,一是封装函数,用return嵌套循环;二是添加一个flag变量,用作判断的标记

Charles未晞 发表于 2018-8-5 22:41:35

if(i = m - 1 )
改成
if (i == m - 1)
否则一直是True了。(判断一次是否能被二整除之后,所以打印出了所有奇数。)

ahr123 发表于 2018-8-5 22:43:27

那请问如何在该基础上完成正确代码呢?去了括号还是不行呀

ahr123 发表于 2018-8-5 22:47:17

已解决,感谢各位大佬
页: [1]
查看完整版本: 100到200 间的 质数显示