如何在C中找到第n个素数

时间:2014-10-20 02:42:53

标签: c

此应用程序将收到一个号码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;
}

2 个答案:

答案 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;
}