/**
* 素数计算
* @Author sannian
* @Date 2022/5/16 15:31
* @Version 1.0
*/
public class Sushu {
public static void main(String[] args) {
long l = System.currentTimeMillis();
int bf = eratosthenes(1000000);
long l1 = System.currentTimeMillis();
System.out.println("时间:"+(l1-l)+"ms");
System.out.println(bf);
}
/**
* 暴力算法
*/
public static int bf (int n){
int count = 0;
for (int i = 2; i < n; i++) {
count += isPrime(i)? 1:0;
}
return count;
}
private static boolean isPrime(int i) {
for (int j = 2; j*j <= i; j++) {
if (i%j==0){
return false;
}
}
return true;
}
/**
* 埃筛法
*/
public static int eratosthenes(int n){
boolean[] flag = new boolean[n];
int count = 0;
for (int i = 2; i < n; i++) {
if (!flag[i]){
count ++;
for (int j = i*i; j < n; j+=i) {
flag[j]=true;
}
}
}
return count;
}
}
质数 计算 java代码
于 2022-05-18 12:00:00 首次发布