素数个数统计——Eratosthenes筛法 [LeetCode 204]
1- 问题描述
Count the number of prime numbers less than a non-negative number, n
2- 算法思想
给出要筛数值的范围 $n$,找出 $\sqrt{n}$ 以内的素数 $p_{1}, p_{2}, \cdots, p_{k}$。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个素数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个素数5筛,把5留下,把5的倍数剔除掉;不断重复下去......。
3- Python实现
from math import sqrt def countPrimes(n):
if n in (0, 1, 2):
return 0
boards = [True] * n
boards[0] = boards[1] = False
for i in range(2, int(sqrt(n)) + 1):
for j in range(i * i, n, i):
boards[j] = False
primes = [i for i in boards if i]
return len(primes)
4- 实例

素数个数统计——Eratosthenes筛法 [LeetCode 204]的更多相关文章
- LeetCode - 204. Count Primes - 埃拉托斯特尼筛法 95.12% - (C++) - Sieve of Eratosthenes
原题 原题链接 Description: Count the number of prime numbers less than a non-negative number, n. 计算小于非负数n的 ...
- 素数筛 : Eratosthenes 筛法, 线性筛法
这是两种简单的素数筛法, 好不容易理解了以后写篇博客加深下记忆 首先, 这两种算法用于解决的问题是 : 求小于n的所有素数 ( 个数 ) 比如 这道题 在不了解这两个素数筛算法的同学, 可能会这么写一 ...
- 由Eratosthenes筛法演变出的一种素数新筛法
这两天和walls老师交流讨论了一个中学竞赛题,我把原题稍作增强和变形,得到如下一个题: 从105到204这100个数中至少要选取多少个数才能保证选出的数中必有两个不是互素的? 我们知道最小的几个素数 ...
- LeetCode Count Primes 求素数个数(埃拉托色尼筛选法)
题意:给一个数n,返回小于n的素数个数. 思路:设数字 k =from 2 to sqrt(n),那么对于每个k,从k2开始,在[2,n)范围内只要是k的倍数的都删掉(也就是说[k,k2)是不用理的, ...
- leetcode 204 count prim 数素数
描述: 给个整数n,计算小于n的素数个数. 思路: 埃拉托斯特尼筛法,其实就是普通筛子,当检测到2是素数,去除所有2的倍数:当检测到3是素数,去除其倍数. 不过这要求空间复杂度为n,时间复杂度为n. ...
- 素数筛法(Eratosthenes筛法)
介绍 Eratosthenes筛法,又名埃氏筛法,对于求1~n区间内的素数,时间复杂度为n log n,对于10^6^ 以内的数比较合适,再超出此范围的就不建议用该方法了. 筛法的思想特别简单: 对于 ...
- 【Python】【demo实验15】【练习实例】【两个数范围内素数的统计】
原题: 判断101-200之间有多少个素数,并输出所有素数. 关于素数的统计,之前已经做过相应的实验了,参考:[显示素数,显示两个数范围内的所有素数] 原题给出的解法,使用math的sqrt函数,这个 ...
- 查找素数Eratosthenes筛法的mpi程序
思路: 只保留奇数 (1)由输入的整数n确定存储奇数(不包括1)的数组大小: n=(n%2==0)?(n/2-1):((n-1)/2);//n为存储奇数的数组大小,不包括基数1 (2)由数组大小n.进 ...
- 记一次【求n以内的素数个数】的优化记录
最近在leetCode上刷提,还是满锻炼人的,为以后面试打基础吧.不多说下面开始. 问题:求[2,n]之间的素数的个数. 来源:leetCode OJ 提示: Let's start with a i ...
随机推荐
- 用Python编写九九乘法表考虑print自动换行问题
编写了一个简单的小程序九九乘法表,代码如下: for i in range(1,10): for j in range(1,i+1): print(" %d*%d=%d" % (j ...
- Spark目录
1. Spark1.0.0 应用程序部署工具spark-submit 2. Spark Streaming的编程模型 3. 使用java api操作HDFS文件 4. 用SBT编译Spark的Word ...
- Python Learning
这是自己之前整理的学习Python的资料,分享出来,希望能给别人一点帮助. Learning Plan Python是什么?- 对Python有基本的认识 版本区别 下载 安装 IDE 文件构造 Py ...
- BootStrap2学习日记23---图片轮播
<div id="carousel1" class="carousel slide"> <div class="carousel-i ...
- java笔记 chapter1 java是什么,能干什么,有什么,特点,开发环境
一,java是什么 二,java能干什么 三,java有什么 四,java的特点 五,java的三大特性:虚拟机,垃圾回收和代码安全 六,构建JSE开发环境:下载安装jdk和配置环境变量 七,编写并运 ...
- asp.net mvc 从数据库中读取图片的实现代码
首先是创建一个类,继承于ActionResult,记住要引用System.Web.Mvc命名空间,如下: public class ImageResult : ActionResult { publi ...
- 用英文加优先级来解读C的声明
比如:int ( * func_p ) ( double ); 首先着眼于标识符. func_p is 因为存在括号,(* func_p) 先被处理,这里着眼于* func_p is a pointe ...
- iOS UINavigationController 详解
developer.apple.com/cn/ 导航条 UINavigationBar继承UIView 导航控制器 UINavigationController (压栈,出栈) ...
- AutoCAD使用技巧
1, 画指定长度的直线 水平线:拾取起点,然后输入@5,0或者@-5,0 垂直线:拾取起点,然后输入@0,5或者@0,-5如果你所要画的线是斜线,可以先画一条水平线,然后点击它,对它进行夹点编辑,使它 ...
- 深入理解HTTPS通讯原理
一.HTTPS简介 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),简单来讲就是加了安全的HTTP,即HTTP+SSL:我们知 ...