[LeetCode] Count Primes

简介: Description: Count the number of prime numbers less than a non-negative number, n解题思路采用Eratosthenes筛选法,依次分别去掉2的倍数,3的倍数,5的倍数,……,最后剩下的即为素数。实现代码//Rumtime:83msclass Solution {p

Description:
Count the number of prime numbers less than a non-negative number, n

解题思路

采用Eratosthenes筛选法,依次分别去掉2的倍数,3的倍数,5的倍数,……,最后剩下的即为素数。

实现代码

//Rumtime:83ms
class Solution {
public:
    int countPrimes(int n) {
        int count = 0;
        bool *b = new bool[n];
        b[2] = true; //2是偶数,但不能被筛掉,需要特殊考虑
        for (int i = 3; i < n; i++)
        {
            if (i & 1)
            {
                b[i] = true; //奇数
            }
            else
            {
                b[i] = false;
            }
        }

        for (int i = 2; i < n; i++)
        {
            if (b[i])
            {
                count++;
                for (int j = 2; j * i < n; j++)
                {
                    b[i * j] = false;
                }
            }
        }

        delete [] b;
        return count;
    }
};
目录
相关文章
|
测试技术
LeetCode 204. Count Primes
统计所有小于非负整数 n 的质数的数量。
32 0
LeetCode 204. Count Primes
LeetCode 204 Count Primes(质数计数)(*)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50617645 翻译 计算小于一个非负整数n的质数的个数。
812 0
|
6天前
|
索引
【力扣刷题】两数求和、移动零、相交链表、反转链表
【力扣刷题】两数求和、移动零、相交链表、反转链表
15 2
【力扣刷题】两数求和、移动零、相交链表、反转链表
|
6天前
|
算法
"刷题记录:哈希表+双指针 | leetcode-2465. 不同的平均值数目 "
该文段是一篇关于编程题目的解答,主要讨论如何找到数组中所有不同平均值的个数。作者首先使用排序和哈希集来解决,将数组转为列表排序后,通过双指针计算平均值并存入哈希集以去重。然后,作者发现可以优化方案,通过双指针在排序后的数组中直接计算两数之和,用哈希集记录不重复的和,从而避免实际计算平均值,提高了算法效率。最终代码展示了这两种方法。
14 0
|
6天前
|
索引
【力扣刷题】删除链表的倒数第 N 个结点、两两交换链表中的节点、随机链表的复制
【力扣刷题】删除链表的倒数第 N 个结点、两两交换链表中的节点、随机链表的复制
12 0
|
6天前
|
存储 算法 索引
【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
17 1
|
6天前
【力扣刷题】二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树
【力扣刷题】二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树
14 0