首页 > 解决方案 > 了解此嵌套 for 循环以在 C++ 中显示素数

问题描述

我是编码初学者,所以我对以下显示小于 20 的素数的示例代码感到困惑。

#include <iostream>
using namespace std;

int main () {
int i, j;

for(i = 2; i<20; i++) 
{
  for(j = 2; j <= (i/j); j++)
     if(i%j==0) break; 
     if(j > (i/j)) cout << i << " is prime\n";

}
return 0;
}

所以假设第一个循环,i = 2,我首先选择 have j = 2。然后,在第 8 行,我有 if(i%j == 0) break; i = j = 2 确实满足这个条件。那么为什么我的输出仍然有 2 作为素数之一呢?

PS 我知道 2 是一个素数,但我不理解代码。谢谢你。

标签: c++primes

解决方案


for循环:

for(j = 2; j <= (i/j); j++)

j <= (i/j)第一次没有通过i = 2

和:

 if(j > (i/j)) cout << i << " is prime\n";

不是该for循环的一部分。


推荐阅读