本篇讲述了如何对素数筛选进行高效率的查找—埃筛法
题目讲述
输一个n,找到n以内的所有质数(注意0和1不是质数)
解题思路
**埃筛法主要准备一个bool数组,初始化为假,进入循环,每个数都从2开始乘以这个数的本身,比如下图中的解释,这样就找到了很多合数,标记为true,下一次判断!isPrime()就能跳过很多数
代码步骤
package Leetcode;
public class 埃晒法_素数个数 {
public static void main(String[] args) {
int num = eratoshens(100);
System.out.println(num);
}
public static int eratoshens(int n){
boolean[] isProm = new boolean[n];
int count = 0;
for(int i = 2;i < n;i++){
if(!isProm[i]){
count++;
for(int j = i * i;j < n;j+=i){
isProm[j] = true;
}
}
}
return count;
}
}
结尾
如果读者发现不同意见,欢迎在评论区发言