题目:
试题 D: 质数
本题总分:10 分
【问题描述】
我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算
第 2019 个质数是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
分析:
从2开始遍历所有,每遇到一个质数count++,直到count==2019时结束,判断是不是质数我们需要把这个数除以小于自身的所有数,如果这个过程中有一个能除尽,则证明不是素数,返回false。
注
2,3是特殊的,他们两个的开方是1点几所以不参与循环直接返回true
x值太大,所以用到了math.sqrt开方
步骤:
package 第十届省赛;public class 质数 {// 我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算
// 第 2019 个质数是多少?public static void main(String[] args) {int count = 0;for (int i = 2;; i++) {if (f(i)) {count++;}if (count == 2019) {System.out.println(i);break;}}}private static boolean f(int x) {//2和3的开方是1点几所以就直接略过循环直接返回truefor (int j = 2; j <=Math.sqrt(x); j++) {//素数判断公式,因为x太大所以需要开方if (x%j==0) {return false;}}return true;}}