统计n之内的素数个数
程序员文章站
2024-03-14 20:46:41
...
当n=100,输出25,说明100以内有25个素数
方法一:暴力解法
public static int count(int n){
int count=0;
for(int i=2;i<n;i++){
count+=isPrime(i)?1:0;;
}
return count;
}
public static boolean isPrime(int n){
for(int i=2;i<=Math.sqrt(n);i++){//注意是小于等于
if(n%i==0){
return false;
}
}
return true;
}
方法二:埃氏筛选法
public static int countPrimes(int n){
//埃氏筛选
int count=0;
boolean b[]=new boolean[n];//初始化默认为flase 这里定义false为素数 true为合数(非素数)后面遍历的话遇到合数就可以直接跳过了
for(int i=2;i<n;i++){
if(!b[i]){
count++;
for(int j=i*i;j<n;j+=i){
//j=i*i是从j=2*i优化而来的,系数2会随着遍历递增(j+=i),
b[j]=true;
}
}
}
return count;
}
上一篇: 筛选法求质数
下一篇: 筛选法求素数(质数)