当前位置: 首页 > 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;
    }
};

相关文章:

  • 《深入理解生命周期与作用域:以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++)用直方图统计像素
  • 江苏网站推广网络/百度竞价推广是什么意思
  • 做网站反复修改/seo品牌
  • 苏州seo/谷歌seo培训
  • 娄底网站seo/电商培训班一般多少钱一个月
  • 企业自己的网站/淘宝推广平台有哪些
  • 如何有效提高网站排名/网页广告调词平台多少钱