用"埃拉托色尼筛"求质数
来源:互联网 发布:java 项目源码下载 编辑:程序博客网 时间:2024/05/29 14:01
该算法一开始初始化一个2~n的连续整数序列,作为候选质数.然后,在算法的第一个循环中,它将类似4和6这
样的2的倍数从序列中消去.然后,它指向列表中的下一数字-3,对将其倍数消去.该算法以这个方式不断做下
去,直到序列中已经没有可消的元素为止.
需要注意的是,如果当前步骤中,我们正在消去p的倍数,那么第一个值得考虑的倍数是p*p,因为其他更小的倍
数2p,……,(p-1)*p已经在先前的步骤中从序列里消去了.了解这个事实可以帮助我们避免多次消去相同的数
字.显然,p*p不会大于n,p也不会大于根号n向下取整的值.
算法:
int Sieve(int a[],int n) //返回2~n中质数的个数,质数存放在数组a中
{ //实现"埃拉托色尼的筛子"
int p,i,j;
for(p=2;p<=n;p++)
a[p]=p;
for(p=2;p<=sqrt(n);p++)
{
if(a[p]) //没有被前面的步骤消去
{
j=p*p;
while(j<=n)
{
a[j]=0; //将该元素标记为已经消去
j+=p;
}
}
}
i=0;
for(p=2;p<=n;p++)
{
if(a[p])
{
a[i]=a[p];
i++;
}
}
return i;
}
- 用"埃拉托色尼筛"求质数
- 用筛选法求质数
- 用筛选法求质数
- 求质数
- 求质数
- 求质数
- 求质数
- 求质数
- 求质数
- 求质数
- 求质数
- 求质数
- 求质数
- 求质数
- 求质数
- 求质数
- 求质数
- 求质数
- 对学习方法记录
- JSP语法简表
- 提示错误 java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/fmt/LocalizationContext
- 关于IE、Firefox、Opera页面呈现异同
- Struts 2与AJAX(第二部分)
- 用"埃拉托色尼筛"求质数
- 感动
- 使用spring 调试提示:Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV
- 备份
- 2007.09.19_test
- 分析 aMule / eMule 的 server.met 文件
- Servle的生命周期
- Oracle9i安装失败分析
- CLR SafeHandle Consideration