【发布时间】:2014-03-06 01:47:58
【问题描述】:
我按照教授的指示编写了这个程序。结果他希望我们使用 SINGLE do-while 循环。虽然我在技术上这样做了...这不会飞。如果不使用 for 循环或至少另一个其他类型的循环,我无法弄清楚如何做到这一点。他说它可以使用continue 或break 语句——但这可能没有必要。
我希望不只是重写我的代码——虽然这很方便,但我并没有很好地从中学习。
感谢所有帮助。
int main() {
int max, x, n = 2; //init variables
//start n at 2 because 1 isn't prime ever
//asks user for max value
printf("Enter max number: ");
scanf("%i", &max);
/*prints prime numbers while the max value
is greater than the number being checked*/
do {
x = 0; //using x as a flag
for (int i = 2; i <= (n / 2); i++) {
if ((n % i) == 0) {
x = 1;
break;
}
}
if (x == 0) //if n is prime, print it!
printf("%i\n", n);
n++; //increase number to check for prime-ness
} while (n < max);
return 0;
}
【问题讨论】:
-
我不明白如何只用一个循环就可以轻松完成。这意味着确定素数的 O(1) 算法。没有这种方法是已知的。
-
可以使用 if 语句吗?
-
@KRUKUSA 我会这么认为。他没有说我们不能。
-
@Nate 你确定程序必须打印 all 个低于特定限制的素数吗?也许输入应该是一个然后被测试的数字? 那 可以通过一个循环轻松完成。但不是前者!
-
@dvnrrs 我确定这就是他要问的。当谈到我们对 C 的预期知识时,我的老师有点可笑。我觉得这门课很简单——但它的内容让我摸不着头脑。