美文网首页
计数质数

计数质数

作者: 面向全麦面包编程 | 来源:发表于2020-07-17 10:35 被阅读0次

计数质数

判断一个素数很简单,代码如下,但如何高效的搜寻一个区间内的所有素数呢?

    public static boolean isPrime(int N) {
        if (N < 2) return false;
        for (int i = 2; i * i <= N; i++) {
            if (N % i == 0) return false;
        }
        return true;
    }

一个数若是可以因式分解,那么得到的两个数一定是一个大于等于√n,一个小于等于√n,所以只需遍历到√n即可
说回正题,我们要做的不是判断区间内所有数是不是素数,而是筛选结果,意思是我们判断出2是素数,那么2的倍数都不可能是素数,如果我们用一个布尔数组/集合来保存结果,那么在 k=2i,3i······ 的位置上皆为false

    public int countPrimes(int n) {
        if (n < 2) return 0;
        List<Boolean> isPrimes = new ArrayList<Boolean>
                (Collections.nCopies(n, true));
        isPrimes.set(0, false);
        isPrimes.set(1, false);
        int count = 0;
        for (int i = 2; i < n; i++) {
            if (isPrimes.get(i)) count++;
            for (int j = i; j < n; j += i) {
                isPrimes.set(j, false);
            }
        }
        return count;
    }

Tips:

  • 用了额外的N+1的存储空间,时间复杂度是O(n/2 + n/3 + n/5 + n/7 +······)

相关文章

  • 计数质数

    统计所有小于非负整数 n 的质数的数量。 示例: 思路 这道题给定一个非负数n,让我们求小于n的质数的个数,题目中...

  • 计数质数

    计数质数 判断一个素数很简单,代码如下,但如何高效的搜寻一个区间内的所有素数呢? 一个数若是可以因式分解,那么得到...

  • 计数质数

    题目 难度级别:简单 统计所有小于非负整数 n 的质数的数量。 示例 1: 输入:n = 10输出:4解释:小于 ...

  • 204. 计数质数

    204. 计数质数 最简单的质数筛埃式筛法

  • Swift 计数质数 - LeetCode

    题目:计数质数 描述:统计所有小于非负整数 n 的质数的数量。 案例1: 质数的定义:质数 方案一:判断质数 代码...

  • 48计数质数

    统计所有小于非负整数 n 的质数的数量。 示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, ...

  • 刷leetCode算法题+解析(十八)

    计数质数 题目:统计所有小于非负整数 n 的质数的数量。 示例:输入: 10输出: 4解释: 小于 10 的质数一...

  • [LeetCode]204. 计数质数

    204. 计数质数统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一...

  • 4、计数质数、罗马数字转整数、3的幂、Fizz Buzz

    计数质数 统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共...

  • LeetCodeDay26 —— 计数质数

    204. 计数质数 描述 统计所有小于非负数整数 n 的质数的数量。 示例 思路 一次判断从2~n质数的数量返回,...

网友评论

      本文标题:计数质数

      本文链接:https://www.haomeiwen.com/subject/jdwwhktx.html