[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 . . .
评论