今天我的导师给我看了一个我不太了解的代码。这是一个代码,它应该告诉我们素数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
答案 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是素数。