博客
关于我
leetCode 204 计数质数(埃氏筛法)
阅读量:271 次
发布时间:2019-03-01

本文共 536 字,大约阅读时间需要 1 分钟。

题目链接:

题目描述:

给定一个数字
n
,求小于
n
的质数的个数。
 
输入输出:
 
输入:n = 10输出:4
输入:n = 1输出:0

题目分析:

本题用埃氏筛法(素数筛)可以十分简便的解出这道题,其原理为从 1 n 遍历,假设当前遍历到 m,则把所有小于 n 的、且是 m 的倍数的整数标为和数;遍历完成后,没有被标为和数的数字即为质数。

代码:

int countPrimes(int n){	if(n<=2)	return 0;	vector
prime(n,true); int count=n-2;//去掉不是质数的1 for(int i=2;i<=n;++i) { if(prime[i]) for(int j=2*i;j

优化: 利用素数的一些特性可以对代码进行优化

int countPrimes(int n){	if(n<=2)	return 0;	vector
prime(n,true); int i=3,sqrtn=sqrt(n),count=n/2;//偶数一定不是质数 while(i<=sqrtn)//最小质因子一定小于等于开方数 { for(int j=i*i;j

 

转载地址:http://oxlx.baihongyu.com/

你可能感兴趣的文章
MySQL分库分表会带来哪些问题?分库分表问题
查看>>
MySQL分组函数
查看>>
MySQL分组查询
查看>>
Mysql分表后同结构不同名称表之间复制数据以及Update语句只更新日期加减不更改时间
查看>>
mySql分页Iimit优化
查看>>
MySQL分页查询
查看>>
mysql列转行函数是什么
查看>>
mysql创建函数报错_mysql在创建存储函数时报错
查看>>
mysql创建数据库和用户 并授权
查看>>
mysql创建数据库指定字符集
查看>>
MySql创建数据表
查看>>
MySQL创建新用户以及ERROR 1396 (HY000)问题解决
查看>>
MySQL创建用户报错:ERROR 1396 (HY000): Operation CREATE USER failed for 'slave'@'%'
查看>>
mysql加强(3)~分组(统计)查询
查看>>
mysql加强(4)~多表查询:笛卡尔积、消除笛卡尔积操作(等值、非等值连接),内连接(隐式连接、显示连接)、外连接、自连接
查看>>
mysql加强(5)~DML 增删改操作和 DQL 查询操作
查看>>
mysql加强(6)~子查询简单介绍、子查询分类
查看>>
mysql加强(7)~事务、事务并发、解决事务并发的方法
查看>>
mysql千万级大数据SQL查询优化
查看>>
MySQL千万级大表优化策略
查看>>