Count Primes
2015-10-08 22:45
281 查看
Description:
Count the number of prime numbers less than a non-negative number, n.
Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.
思路:采用筛选法,先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一 个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一 直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。代码如下:
Count the number of prime numbers less than a non-negative number, n.
Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.
思路:采用筛选法,先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一 个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一 直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。代码如下:
class Solution { public: int countPrimes(int n) { int i,j, count = 0; bool *prime = new bool[n+1]; for(i=2; i<n; i++) if(i%2 || i == 2){ prime[i]=true; count++; } else prime[i]=false; for(i=3; i*i < n; i++){ if(prime[i]) for(j=i+i; j < n; j+=i){ if(prime[j]) count--; prime[j]=false; } } return count; } };
相关文章推荐
- python学习进阶一
- 在mvc中 怎么给@Html.HiddenFor()赋值
- TCP那些事
- 信息安全系统设计基础第三周学习总结
- Python中使用Flask、MongoDB搭建简易图片服务器
- 无效绑定问题:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
- 字符串匹配之horspool算法
- 7天hadoop(二)linux的常用命令
- Codeforces Round #324 (Div. 2)——B. Kolya and Tanya
- 多态实现线性表
- linux下编译C程序
- 第二章作业
- 【特种兵PPT教程】如何在PPT中插入单选按钮、复选框?
- Java的HashMap和HashTable
- ACM竞赛中数据结构题目心得:分块【With HDU4366】
- LeetCode: Game of Life
- Zabbix 监控之 - 报警篇 Actions
- 待考虑问题
- Mantis的使用
- Kafka的JAVA操作