c++ - 了解此嵌套 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 是一个素数,但我不理解代码。谢谢你。
解决方案
for
循环:
for(j = 2; j <= (i/j); j++)
j <= (i/j)
第一次没有通过i = 2
。
和:
if(j > (i/j)) cout << i << " is prime\n";
不是该for
循环的一部分。
推荐阅读
- webpack - Webpack 4.0:生产配置不创建捆绑块文件
- jquery - VueJS/jquery 通过单击按钮从 P 标签中获取值
- c - 在 beaglebone black 上出现分段错误
- python - 使用 Pip 离线安装软件包,但由于某种原因它无法识别轮子?
- html - 如何将数据从excel复制/粘贴到网页(VBA)?
- angular - 找不到类型的 Angular Redux
- oracle - 在 SQL LOADER 控制文件中使用 CASE 语句
- java - Prometheus 计数器不一致
- javascript - 响应式菜单按钮仅在 iOS 设备上不起作用
- reactjs - 在 React 16.8 中访问整个状态对象