【发布时间】:2014-10-20 02:42:53
【问题描述】:
此应用程序将收到一个号码n。收到这个数字后,程序必须在素数列表中显示n-th 素数。例如,如果用户输入3,程序应该显示5,因为5 是从2 开始的第三个素数。我知道我的代码有问题,但我不知道问题出在哪里以及如何解决。
#include <stdio.h>
int main() {
int n, i, flag, prime;
int counter = 1;
scanf("%d", &n);
if (n == 1) prime = 2;
else
do{
prime = 3;
for (i = 2; i < prime; i++) {
flag = 1;
if (prime % i == 0) {
flag = 0;
}
}
if (flag == 1)
counter++;
prime++;
} while (counter != n);
if (counter == n)
printf("%d\n", prime);
return 0;
}
【问题讨论】:
-
你必须描述为什么你认为这段代码是错误的。具体来说,解释它打印什么输出,你期望什么以及你认为为什么会发生这种情况。仅仅做一个这样的练习很可能会给你一个答案。
-
不知道你是否关心,但使用筛算法(eratosthenes 或 atkins)会显着加快你的函数,以处理更大的数字。
-
这段代码很短而且相当简单,n=3 的情况不会运行很长时间;您应该能够在纸上或在
printf语句的帮助下逐步完成它,并确切了解它是如何出错的。 -
例如标准输入:3 标准输出:5 我的输入:3 我的输出:4 Whaterer I input except 1, it prints 4...
标签: c