1. 题目

统计所有小于非负整数 n 的质数的数量。

示例:输入: 10
输出: 4
解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

2. 填表解题

  • 2的倍数不是质数
  • 3的倍数不是质数
  • 5的倍数,7的倍数,11的倍数。。。质数的倍数不是质数
class Solution {public:int countPrimes(int n) {if(n <= 2)return 0;bool isTrue[n];memset(isTrue,true,n*sizeof(bool));int count = 0;for(int i = 2; i < n; ++i){if(isTrue[i])for(int j = 2*i; j < n; j = j+i)isTrue[j] = false;}for(int i = 2; i < n; ++i)if(isTrue[i])count++;return count;}
};

优化双重循环的范围,减少重复

class Solution {public:int countPrimes(int n) {if(n <= 2)return 0;bool isTrue[n];memset(isTrue,true,n*sizeof(bool));int count = 0;for(int i = 2; i < sqrt(n); ++i){if(isTrue[i])for(int j = i*i; j < n; j = j+i)isTrue[j] = false;}for(int i = 2; i < n; ++i)if(isTrue[i])count++;return count;}
};

https://www.lintcode.com/problem/find-prime 也有题目可以做

输出n以内所有的素数

class Solution {public:/*** @param n: an integer* @return: return all prime numbers within n.*/vector<int> prime(int n) {// write your code herevector<int> ans;vector<bool> isprime(n+1, true);for(int i = 2; i <= n; ++i){if(isprime[i]){for(int j = i*i; j <= n; j += i)isprime[j] = false;}}for(int i = 2; i <= n; ++i)if(isprime[i])ans.push_back(i);return ans;}
};

LeetCode 204. 计数质数(质数的倍数不是质数)相关推荐

  1. Leetcode 204. 计数质数 解题思路及C++实现

    解题思路: 利用一个数组记录 n 个数是否为质数. 质数的倍数都是非质数,就这样遍历下去就可以了. class Solution { public:int countPrimes(int n) {if ...

  2. leetcode 204. 计数质数

    题目 思路:厄拉多塞筛法 比如说求20以内质数的个数 首先 0, 1 不是质数 2 是第一个质数,然后把 20 以内所有 2 的倍数划去 2 后面紧跟的数即为下一个质数 3 , 然后把 3 所有的倍数 ...

  3. LeetCode Algorithm 204. 计数质数

    204. 计数质数 Ideas 质数的题目相对来说是个很经典的内容,虽然枚举也可以解决,但是复杂度很高,所以决定用埃氏筛来实现. 埃氏筛的基本思想是:从2开始,将每个质数的倍数都标记成合数. Code ...

  4. 【LeetCode】计数质数 [M](素数筛选)

    204. 计数质数 - 力扣(LeetCode) 一.题目 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 . 示例 1: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 ...

  5. 力扣——204. 计数质数

    题目 python代码 1.直接法 import timeitdef countPrimes(n):'''按照质数的定义,用常规的方法来取质数 '''primesList = []for i in r ...

  6. c语言求13为质数的代码,C语言求质数.doc

    C语言求质数 试编写一个程序,找出2->N之间的所有质数.希望用尽可能快的方法实现.[问题分析]: 这个问题可以有两种解法:一种是用"筛子法",另一种是从2->N检查, ...

  7. java求小于n的素数_java_Java实现求小于n的质数的3种方法,质数概念 质数,又称素数, - phpStudy...

    Java实现求小于n的质数的3种方法 质数概念 质数,又称素数,指在一个大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数). 最小的素数是2,也是素 ...

  8. java 10000以内的质数_【10000以内有多少质数】作业帮

    1-10000 共1229个质数 10001-20000一共有 1033个质数 20001-30000一共有 983个质数 30001-40000一共有 958个质数 40001-50000一共有 9 ...

  9. LeetCode从读题到自闭:204. 计数质数

    题目:统计所有小于非负整数 n 的质数的数量 示例 1: 输入:n = 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 . 示例 2: 输入:n = 0 输出: ...

最新文章

  1. Wpf消息循环之消息传递
  2. Leangoo看板工具做单团队敏捷开发
  3. 报错信息为:Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource
  4. dynamips模拟器模块详细介绍
  5. Spring发送带附件邮件
  6. Ivan Fedorov:用已知无法想象未来 - Mixin Network开发者访谈
  7. 2020-08-14 光纤通信第三章知识点整理
  8. UISwitch 开关控件—IOS开发
  9. 文档类型HTML和XHTML,关于xhtml:html中有哪些不同的doctypes,它们是什么意思?
  10. 电商C4D素材,玩转立体作品不是问题
  11. 本地升级MySQL数据库版本为8.0.23,使用SQLyog(小海豚)无法进行连接
  12. Java EE开发四大常用框架(1)
  13. WinXP系统连接网络教程
  14. 毫无PS痕迹 你的第一本Photoshop书pdf
  15. XRD 数据处理:使用 Origin 进行多谱图对比
  16. 斑马打印机怎么设置标签纸
  17. 1.《阿西莫夫:机器人短篇全集》
  18. 第2课计算机的发展教学反思,信息技术课教学反思2
  19. 忠魁互联头条SEO优化:字节跳动打造全新搜索引擎
  20. 【JDK8 新特性2】JDK 8 接口默认方法/静态方法

热门文章

  1. TCP的定时器系列 — 保活定时器(有图有代码有真相!!!)
  2. ARM中各始终之间的关系,FCLK HCLK PCLK的关系
  3. 使用spring的@autowired注解,无法实例化dao
  4. VS 使用 :新建项目
  5. PHP json_encode后的数据有的大括号于中括号
  6. Confluent Platform 3.0支持使用Kafka Streams实现实时的数据处理(最新版已经是3.1了,支持kafka0.10了)...
  7. plsql 中的一些好的设置和快捷键总结
  8. 静态链接库与动态链接库的区别
  9. 排序 八种经典排序算法
  10. emailjava中怎么校验_Java使用注解实现参数统一校验功能