素数筛法
2015-08-03 08:07
204 查看
/*给定一个正整数N,求出[2,N]中的所有素数*/ #define maxn 1000000 boool vis[maxn]; void getprime(int n, int &tot, int ans[]) //筛法将合数筛掉,留下的则是素数 ,用于快速判断一个区间内的所有素数 { fot = 0; //记录素数的个数 for (int i = 2; i<= n; i++) vis[i] = true; //首先进行初始化,使得所有的为真 for (int i = 2; i<=n; i++) { if (vis[i]) //从素数2开始进行筛选 { if (i*i > n) break; for (int j = i*i; i<=n; j = j+i;) vis[j] = false; //把从i*i开始的每一个i的倍数的vis[j]赋值为false } } for (int i = 2; i<=n; i++) { if (vis[i]) ans[++tot] = i; //计算素数的个数,并且将所有的素数放在数组ans中,并从小到大编上号 } }
相关文章推荐
- Linux 桌面领域的八大最新潮流
- Linux 桌面领域的八大最新潮流
- POJ 2251 Dungeon Master
- HDOJ~~A+B Problem
- DFS BestCoder Round #49 ($) 1001 Untitled
- BC - Untitled
- 精通iOS
- 黑马程序员——Map集合(映射)
- UIImageView图片填充三种模式的区别
- andriod viewholder的使用
- 周赛--Heros and Swords
- 解析大型.NET ERP系统 通用附件管理功能
- 无法访问windows installer服务怎么办
- 机房收费系统之总结篇
- MySQL开发技巧——如何正确使用Join语句
- 架构师速成6.12-开发框架-前端封装
- 《C++ Primier Plus》01
- iOS笔记060 - 自定义控件
- python爬虫(四)--python正则表达式
- CodeForces 219D-Choosing Capital for Treeland(树形dp)