有关求100-200的质数问题

#include<stdio.h>

void main()
{
    int a, b;
    for (a = 100; a <= 200; a++)
        //取100以内所有的数
    {
        for (b = 2; b < a; b++)
            //穷举法判断是否有因子
            if (a % b == 0)//有则非质数
            break;//跳出本次循环
            if (b >= a)//当条件为真则为质数
            printf("%d\n", a);
    }
}
 

 

我想知道的是第二个for循环里指出b小于a 为什么最后又当b>=a的时候输出结果呢

因为没加花括号,所以很容易看错,其实这段代码并没有在第二个for循环内。等效于如下代码:

#include<stdio.h>

void main()
{
    int a, b;
    for (a = 100; a <= 200; a++)
        //取100以内所有的数
    {
        for (b = 2; b < a; b++)
        {
            //穷举法判断是否有因子
            if (a % b == 0)//有则非质数
            {
                break;//跳出本次循环
            }
        }
        if (b >= a)//当条件为真则为质数
        {
            printf("%d\n", a);
        }
    }
}

养成好的习惯吧,不加花括号至少把缩进给弄好。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^