酷酷的代码段

[C]​ 找素数 [第三届蓝桥杯决赛高职高专组-第一题]

题目描述】

素数就是不能再进行等分的整数。比如:7,11。而9不是素数,因为它可以平分为3等份。一般认为最小的素数是2,接着是3,5,... 

请问,第100002(十万零二)个素数是多少?

请注意:“2” 是第一素数,“3” 是第二个素数,依此类推。

控制住循环的次数即可。其他没什么难点。 

代码段】

#include "stdio.h"

int primeCheck (int sum, int* prime, int n)
{
    int i;
    for (i = 1; i <= (n>200?200:n); ++i){
        prime++;
        if (sum % (*prime) == 0) return 0;
    }
    return 1;
}

int main()
{
    int prime[101000] = {0, 2};
    int i, n= 1, sum = 2;
    while(n < 100002) {
        sum++;
        if(primeCheck(sum,prime,n)) {
            n++;
            prime[n] = sum;
        }
    }

    printf("%d\n", prime[100002]);
    return 0;
}

【运行结果】

1299743

--------------------------------
Process exited with return value 0
Press any key to continue . . .

评论