Output the k-th Prime Number


问题:输出第k个素数(1<=k<=10000)。

时间要求:必须在50ms内完成计算。

实现代码:


#define MAX 105000
unsigned long r[MAX],p[10000],n,t;
int main(){
	int i,j,k,m;
	for(i=0;i<MAX;++i) r[i]=i;
	for(i=0;i<MAX;++i){
		if(r[i]>1) {
			for(j=2;j<MAX;++j) 
				if((t=i*j)<=MAX) r[t]=0;
				else break;
		}
	}
	
	for(m=i=0;i<MAX;++i){
	    if(r[i]>1) p[m++]=r[i];
		if(m>=10000) break;
	}

	for(;~scanf("%d",&k);){
		printf("%ld\n",p[k-1]);
	}
}




运行结果:

Output the k-th Prime Number_第1张图片

你可能感兴趣的:(Prime)