此应用程序将收到一个号码n
。收到此号后,程序必须在素数列表中显示n
- 素数。例如,如果用户输入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;
}
答案 0 :(得分:0)
每次循环都会将标记重置为1,因此标记为&#39;只会告诉你,素数是否可以被&#34; prime-1&#34;整除,当然它永远不会。
答案 1 :(得分:0)
修复保单样本,如下所示:
#include<stdio.h>
int main(void){
int n, i, flag, prime;
int counter = 1;
scanf("%d", &n);
if (n == 1)
prime = 2;
else {
prime = 1;
do{
prime += 2;
flag = 1;
for (i = 3; i < prime; i+=2){
if (prime % i == 0) {
flag = 0;
break;
}
}
if(flag == 1)
counter++;
} while (counter != n);
}
printf("%d\n", prime);
return 0;
}