LeetCode 204. Count Primes[通俗易懂]

LeetCode 204. Count Primes

大家好,又见面了,我是全栈君。

LeetCode原题维基百科都有解释用到的Sieve of Eratosthenes算法。
该算法可在O(nloglogn)时间内,求出小于n的全部质数;空间复杂度为O(n).
随着n的增大。当空间有限时。维基百科还提出了一种分段筛选(segmented sieve)方法。在时间复杂度不变的情况下,将空间复杂度降为O(n^0.5).

以下代码实现了常规筛选(regular sieve)方法:

class Solution 
{
public:
    int countPrimes(int n) 
    {
        if (n <= 1)
        {
            return 0;
        }

        bool prime[n];
        memset(prime, true, sizeof(prime));
        for (int i = 2; i * i < n; ++ i)
        {
            if (prime[i] == false)
            {
                continue;
            }
            for (int j = i * i; j < n; j += i)
            {
                prime[j] = false;
            }
        }
        return count_if(prime+2, prime+n, [](bool prime) -> bool { return prime;});
    }
};

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115376.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 7-10 公路村村通(并查集kruskal)

    7-10 公路村村通(并查集kruskal)最小生成树题目链接现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。输入样例:6 151 2 51 3 3

    2022年8月8日
    3
  • 算法学习路线总结

    算法学习路线总结1.基础算法总结点击就可以查看相关博客文档讲解CreatedwithRaphaël2.2.0基础算法排序、查找算法选择排序冒泡排序插入排序

    2022年6月19日
    24
  • Liquibase的简单使用[通俗易懂]

    Liquibase的简单使用[通俗易懂]`LiquiBase`是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通

    2022年8月5日
    4
  • 初识ABP vNext(11):聚合根、仓储、领域服务、应用服务、Blob存储

    初识ABP vNext(11):聚合根、仓储、领域服务、应用服务、Blob存储

    2020年11月20日
    200
  • spss线性回归模型汇总_多元线性回归分析模型

    spss线性回归模型汇总_多元线性回归分析模型多元线性回归,主要是研究一个因变量与多个自变量之间的相关关系,跟一元回归原理差不多,区别在于影响因素(自变量)更多些而已,例如:一元线性回归方程为:毫无疑问,多元线性回归方程应该为:上图中的x1

    2022年8月3日
    6
  • ELK入门

    ELK入门ELK入门

    2022年4月25日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号