您好,我现在花了很多时间试图弄清楚我的教程给出的这个示例是如何工作的,有一些事情我不明白,是的,我已经在网上搜索了帮助,但是没有太多东西我真正想了解的是这个具体的例子。
我不明白的第一件事是 'i' 和 'j' = 2 并且两个 for 循环都有 i++ 和 j++,这不会使 'i' 和 'j' 始终相等吗? 因此,在第二个 for 循环中,如果 'j' 必须小于例如 4/4 = 1 那么它必须小于 1?当它被初始化为2时。
int i, j;
for(i=2; i<100; i++)
{
for(j=2; j <= (i/j); j++)
{
if(!(i%j))
break; // if factor found, not prime
if(j > (i/j))
cout << i << " is prime\n";
}
}
最佳答案
both the for loops has i++ and j++, won't that make 'i' and 'j' equal all the time?
不! i++
递增外部循环,j++
递增内部循环。对于外循环的每一轮,内循环都可以迭代(并因此递增)多次。因此,对于外循环的每一轮,j
都会在内循环中遍历从 2
到 i/j
的值。
我建议您在调试器中尝试此代码,或在笔和纸上模拟它以了解发生了什么。
关于c++ - 嵌套循环和素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24995234/