您的位置:首页 > 其它

蓝桥杯-第n个素数

2017-03-27 22:33 316 查看
题目

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

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

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

-代码

public class NPrime {

public static void main(String[] args) {
int N = 10000000, n = 100002;
//long start = System.currentTimeMillis();
boolean[] isRight = new boolean
;
//这是较优的一种筛选了
for(int i=2;i<N/2;i++) {
if(isRight[i])
continue;
for(int j=2;j<=N/i;j++) {
if(i*j<N)
isRight[i*j] = true;
}
}
int cnt = 1;
for(int i=3;i<N;i+=2) {
if(!isRight[i])
cnt++;
if(cnt==n) {
System.out.println(i);
break;
}
}
//long end = System.currentTimeMillis();
//System.out.println(end-start);
}
}


结果

1299743


程序大概花了350milliseconds

官方答案

有人说这样解,

用素数分布定理预判范围,然后用埃拉托色尼法筛吧

反正我是不会。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string class