常用方法:
package test;
import java.util.Scanner;
public class PrimeCount {
//判断一个数是否为素数的时间复杂度为O(sqrt(n))
boolean isPrime(int num){
if(num < 2)
return false;
int i = 2;
for(;i*i<=num;i++){
if(num %i==0)
break;
}
if(i*i >num)
return true;
return false;
}
public static void main(String[] args) {
PrimeCount pc = new PrimeCount();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count = 0;
for(int i =1;i<=n;i++){
if(pc.isPrime(i))
count++;
}
sc.close();
System.out.println(count);
}
}
上述算法的时间复杂度为O(n*sqrt(n));
2、埃拉托斯特尼筛法: