【发布时间】:2014-09-25 00:16:17
【问题描述】:
我一直在尝试编写一个程序来打印出最高值为 N 的素数。
运行程序时,提示我按预期输入值N,但是当我按回车时,程序结束。我认为问题可能在于break语句:
if (modulo == 0) break;
尽管读到“break”只会结束嵌套循环而不是两者,但我认为它是唯一可能出错的地方。当我将其替换为“继续”时,程序会打印出从 N 到 0 的所有整数,因此如果我输入 N=20,则输出为 20、19、18、... 3、2、
代码的相关部分如下,对于 C++ 新手的任何帮助/建议将不胜感激。
int N, f;
float modulo;
cout << "Welcome to the prime number sieve\n";
cout << "Enter the number up to which the prime numbers will be printed: ";
cin >> N;
for (int j = N; j != 1; j--) {
f = j;
for (f; f != 0; f--) {
modulo = j%f;
if (f == 1) {
cout << j << ", ";
}
if (modulo == 0) break;
}
}
return 0;
【问题讨论】:
-
尝试单步调试代码(用笔和纸手动或在调试器的帮助下)。这应该可以帮助您弄清楚这里实际发生了什么(特别是查看
modulo的值,因为它是在内部循环中计算出来的)。 -
感谢您抽出时间 SleuthEye,我会再试试看。
标签: c++ loops primes nested-loops break