找质数算法(Sieve of Eratosthenes筛法)
来源:互联网 发布:matlab for mac 10.12 编辑:程序博客网 时间:2024/05/16 10:46
http://www.cnblogs.com/guoxiaocong/archive/2005/12/27/305611.html
由于一个合数总是可以分解成若干个质数的乘积,那么如果把质数(最初只知道2是质数)的倍数都去掉,那么剩下的就是质数了。
例如要查找100以内的质数,首先2是质数,把2的倍数去掉;此时3没有被去掉,可认为是质数,所以把3的倍数去掉;再到5,再到7,7之后呢,因为8,9,10刚才都被去掉了,而100以内的任意合数肯定都有一个因子小于10(100的开方),所以,去掉,2,3,5,7的倍数后剩下的都是质数了。
用程序可以这样解决,引入布尔类型数组a[i],如果i是质数,a[i]=true,否则a[i]=false。那么划掉i可以表示成a[i]=false。
//找出n以内质数
void Sieve(int n)
{
bool[] a = new bool[n+1];
for (int i = 2; i <= n; i++) a[i] = true;
for (int i = 2; i <= Math.Sqrt(n); i++)
{
if (a[i])
for (int j = i; j*i <= n; j++) a[j * i] = false;
}
for (int i = 0; i <= n; i++)
{
if (a[i])
Console.Write("{0},",i.ToString());
}
}
如果去掉最后一个用来显示结果的循环的话,运行Sieve(10000000)只要1秒多,而上次那个算法PrimeNum(10000000)却要71秒多!
- 找质数算法(Sieve of Eratosthenes筛法)
- 找质数算法(Sieve of Eratosthenes筛法)
- 找质数算法(Sieve of Eratosthenes筛法)
- 找质数算法之埃拉托色尼筛选法(Sieve of Eratosthenes算法)
- Sieve of Eratosthenes求质数
- Sieve of Eratosthenes算法实现
- Sieve of Eratosthenes Algorithm算法 JAVA实现
- 生成质数的好方法:sieve of eratosthenes
- 高效寻找质数——Sieve of Eratosthenes
- Sieve Of Eratosthenes求素数(埃拉托斯特尼筛法)
- Sieve of Eratosthenes[ZT]
- The Sieve of Eratosthenes
- Sieve of Eratosthenes
- sieve of Eratosthenes 找质素
- the Sieve of Eratosthenes
- 09 Sieve of Eratosthenes
- Sieve of Eratosthenes
- 埃拉托斯特尼筛法(Sieve of Eratosthenes)简单c实现
- 获取windows版本
- 关于word2007 2010中使用endnote插入文献巨卡的问题
- MSN错误800488fb处理
- 程序员真的要开始 iPhone 程序开发了吗?
- 虚拟化前沿技术
- 找质数算法(Sieve of Eratosthenes筛法)
- Git cross the “Great Firewall of China”
- JQuery实现的主从表关系
- 机会难得!15G超大容量,130多小时超长课时PHP视频光盘!
- 找素数(质数)算法
- 检测windows 32位程序是否运行在64位系统上
- 匹配中文字符的正则表达式: [/u4e00-/u9fa5]
- Oracle数据库的安装
- ubuntu 下的java 环境的配置、简单的编译与运行