强烈推荐先看一下这篇蓝桥杯之素数及相关判断方法(看这一篇就够了)_冷兮雪的博客-CSDN博客
目录
一、找素数(填空题)
1、题目
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
素数就是不能再进行等分的整数。比如:7,117,11。而 99 不是素数,因为它可以平分为 33 等份。一般认为最小的素数是22,接着是 3,5,...3,5,...
请问,第 100002100002(十万零二)个素数是多少?
请注意:“2” 是第一素数,“3”是第二个素数,依此类推。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
2、题目解读
看题目就是让我们找到第100002个素数,题目所给的最大运行时间为1s,可以使用任意一种找素数的方法。 看了我之前那篇文章就知道,有关找寻素数的方法有五种,那我就用这道题目来让大家直观明了的比较比较其中三种方法运行速度。
3、代码
public class 找素数tkt {
//欧拉筛法(埃氏筛法的优化版)
public static void eulerSieve(int n){
boolean[] isPrime = new boolean[50*n];
int[] Prime=new int[n];//存放素数的数组,false为素数
isPrime[0] = isPrime[1] = true;//数字0和1都不是素数,所以赋true
int count = 0;
for (int i = 2; i <50*n; i++) {
if (count==100002)
break;
if (!isPrime[i])//若当前数是素数
Prime[count++] = i;//则存入素数数组
for (int j = 0; j < count && Prime[j