LeeCode算法刷题

统计素数个数-暴力破解

统计n以内的素数个数

素数:是能被1和自身整除的自然数,0、1除外

例如:

输入:100

输出:25

重点考察:埃筛法

  public static void main(String[] args) {
        System.out.println(bf(100));
    }
    //暴力算法
    public static int bf(int n){
        //设置一个计数器
        int count =0;
        //遍历100以内的所有数
        for (int i = 2; i <n ; i++) {
            //用isPrime方法,如果是素数返回1,不是返回0,赋值自增给计数器
           count += isPrime(i)?1:0;
        }
        //返回计数器
        return count;
    }
判断一个数是不是素数
//    private static boolean isPrime(int x) {
//        //判断是否只能被1和本身整除
//        for (int i = 2; i < x; i++) {
//            if (x%i==0){
//                return false;
//            }
//        }
//        return true;
//    }
    //判断一个数是不是素数,优化
    private static boolean isPrime(int x) {
        //判断是否只能被1和本身整除,例如12,2*6,6*2判断了两次,我们只需要一半,即根号12,同时平方就是12
        for (int i = 2; i *i< x; i++) {
            if (x%i==0){
                return false;
            }
        }
        return true;
    }
}

猜你喜欢

转载自blog.csdn.net/m0_63245620/article/details/134895626