P3-统计素数个数-暴力算法

2021-05-05  本文已影响0人  YonchanLew
//统计素数个数
//素数:只能被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;
    }
    
}
上一篇 下一篇

猜你喜欢

热点阅读