//统计素数个数
//素数:只能被1和自身整除的自然数,0、1除外
public class P3 {
public static void main(String[] args) {
System.out.println(bf(100));
}
//暴力算法
public static int bf(int n) {
int count = 0;
for (int i = 2; i < n; i++) {
count += isPrime(i) ? 1 : 0;
}
return count;
}
//判断是否是素数
/*
i 其实不用写成小于 x
例如x=12时
无非就是 2*6 3*4 4*3 6*2
前后其实是相同,只是交换了的
前后两个的临界点就是 根号12 * 根号12
根号12约等于3.46,所以2*6 3*4 和 4*3 6*2 大概就是在3.46的位置开始对称
只要根号x之前没找到,后面都不会找到,不用继续查找
* */
private static boolean isPrime(int x) {
// for (int i=2; i<x; i++){
for (int i = 2; i * i <= x; i++) {
if (x % i == 0) {
return false;
}
}
return true;
}
}
网友评论