当前位置: 首页 > news >正文

leetcode 204. Count Primes

题目描述

这是道纯数学类问题。

先回忆一下,素数的定义。

质数(英文名:Prime number)又称素数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。

可以用简单好理解的Eratosthenes筛法,时间复杂度是O(nloglogn)。

算法从小到大枚举所有数,对每一个素数(从2开始,已知2是素数),筛去它的所有倍数,剩下的就都是素数了。当从小到大到达某数a时,如果a没有被前面步骤的数筛去,那么a一定是素数。这是因为,如果a不是素数,那么a一定有小于a的素因子,这样在之前的步骤中a一定会被筛掉,所以当枚举到a时还没有被筛掉,那么a一定是素数。

class Solution {
public:
    int countPrimes(int n) {
        //由素数的定义,1既不是素数也不是合数
        if(n < 2) return 0;
        int prime_count = 0;
        //isPrime[i]表示,正整数i是否是素数,i>=2
        vector<bool> isPrime(n,true);
        for(int i = 2;i<n;i++){
            if(isPrime[i]){
                //使用Eratosthenes筛法,素数的倍数肯定不是素数
                for(int j = i+i;j < n;j+=i){
                    isPrime[j] = false;
                }
                prime_count++;
            }
        }
        return prime_count;
    }
};

http://www.dtcms.com/a/128966.html

相关文章:

  • 《深入理解生命周期与作用域:以C语言为例》
  • 概念辨析:Redis 多路 I/O 复用和多线程
  • MSCKF及可观性总结
  • Elasticsearch:使用稀疏向量提升相关性
  • 修复 WPS 编译错误:缺少:Sub或Function 且出现两个MathType加载项
  • 生物化学笔记:医学免疫学原理15 超敏反应过敏反应(I型[蚊虫叮咬]+II型[新生儿溶血症、突眼型甲亢]+III型+IV型)
  • Ollama调用多GPU实现负载均衡
  • 知识产权——计算机软件著作权的归属
  • 利用MinGW编译OpenCV源码
  • 这几天的大风,咋回事呢?还有软件开发防护
  • instructor库实现batch 请求
  • 基础数学:图论与信息论
  • 前端性能测试工具 —— WebPageTest
  • AI——使用pandas
  • 深入解析嵌入模型Embedding :从理论到实践的全方位指南
  • 微服务的服务调用详解以及常见解决方案对比
  • 软件测试——测试概念
  • CCLK IE转EtherCAT凭借网关模块实现三菱PLC与汇川伺服精准通讯的实用案例​
  • 107.二叉树的层序遍历II- 力扣(LeetCode)
  • opencv(C++)用直方图统计像素
  • 动态多目标优化:基于可学习预测的动态多目标进化算法(DIP-DMOEA)求解CEC2018(DF1-DF14),提供MATLAB代码
  • pair与tuple
  • 缓存与数据库一致性:从问题到解决方案全解析
  • 04-微服务 面试题-mk
  • 斐波那契数列 (Fibonacci Sequence) C++
  • 0.DockerCE起步之Linux相关【完善中】
  • 提示词 (Prompt)
  • 树上搜索 第32次CCF-CSP计算机软件能力认证
  • 激光院董事长龚赤坤到北京研发中心检查指导工作
  • 深入解析 Spring AI ChatClient:构建高效 AI 应用的终极指南