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]);
}
}




运行结果:

[img]http://dl.iteye.com/upload/attachment/0063/3818/0858bee3-b113-36e8-83eb-2df6d49ebec7.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/0063/3820/6f6bcec9-eae5-305e-9149-af9ef5a3a5c5.jpg[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值