这个嵌套for循环如何工作?

时间:2014-08-13 14:41:29

标签: c++

今天我的导师给我看了一个我不太了解的代码。这是一个代码,它应该告诉我们素数n是多少。这是代码..

int main()
{
    const int max = 3;
    int count = 0;
    int i, j;

    for (i = 2;; i++) {
        for (j = 2; j < i; j++)
            if (i % j == 0)
            {
                break;
            }
        if (i == j) {
            count++;
            if (count == max)
                break;
        }
    }
    cout << max << "st prime number is: " << i;
}

所以基本上我不明白这个嵌套for循环是如何工作的。当谈到i = 3时,内部for循环是否会增加?...还是会直接进入下面的语句?当3 == 2不成立时,这个程序将如何证明我们3是素数?仍然这个程序告诉我们3是素数..:s

1 个答案:

答案 0 :(得分:1)

prime数是一个大于1的自然数,除了1和它本身之外没有正除数。

内部循环生成从2到i-1的所有数字,如果i可被任何数字整除&lt;我所以它不是素数。

if (i == j)

如果内循环中的j到达i,则表示内循环没有破坏! 所以我是素数。

让我们试试i = 3,
内循环

for(j = 2; j < 3; ++j)
    if(i % j == 0) // i divisible by j
        break;

这个循环不会终止(因为那个中断)因为3不能被2整除, 现在j = 3,

if(j == i)

现在是真的,3是素数。