艾拉斯托尼素数筛选法
来源:互联网 发布:淘宝能延长收货几天 编辑:程序博客网 时间:2024/04/30 14:06
#include<iostream.h>
#include<math.h>
int sieve(int prime[], int n, int k)
{
int i;
for(i=k+1;i<n; i++)
if(prime[i] && prime[i]%prime[k]==0)
prime[i]=0;
k++; //求下一个可用的筛下标
while(prime[k]==0)
k++;
return k;
}
void erat_sieve(int prime[],int n)
{
int i,m,k;
prime[0]=2;
n=n/2;
for(i=1;i<n;i++)
prime[i]=2*i+1;
m=sqrt(n);
k=1;
while(prime[k]<m)
k=sieve(prime,n,k); //用prime[k]作筛子,对数组prime作筛选
}
void main()
{
int prime[10000];
int i,n,cnt;
cout<<"输入一个正整数作为区间最大值"<<endl;
cin>>n;
erat_sieve(prime,n);
cnt=0; //cnt用于统计prime总的素数个数
for(i=0;i<n/2;i++)
if(prime[i])
{
cnt++;
if(cnt%8==0)
{ //每行输出8个素数
cout<<prime[i]<<" ";
cout<<endl;
}
else
cout<<prime[i]<<" ";
}
cout<<endl;
cout<<"1到"<<n<<"之间的素数个数="<<cnt;
cout<<endl;
}
#include<math.h>
int sieve(int prime[], int n, int k)
{
int i;
for(i=k+1;i<n; i++)
if(prime[i] && prime[i]%prime[k]==0)
prime[i]=0;
k++; //求下一个可用的筛下标
while(prime[k]==0)
k++;
return k;
}
void erat_sieve(int prime[],int n)
{
int i,m,k;
prime[0]=2;
n=n/2;
for(i=1;i<n;i++)
prime[i]=2*i+1;
m=sqrt(n);
k=1;
while(prime[k]<m)
k=sieve(prime,n,k); //用prime[k]作筛子,对数组prime作筛选
}
void main()
{
int prime[10000];
int i,n,cnt;
cout<<"输入一个正整数作为区间最大值"<<endl;
cin>>n;
erat_sieve(prime,n);
cnt=0; //cnt用于统计prime总的素数个数
for(i=0;i<n/2;i++)
if(prime[i])
{
cnt++;
if(cnt%8==0)
{ //每行输出8个素数
cout<<prime[i]<<" ";
cout<<endl;
}
else
cout<<prime[i]<<" ";
}
cout<<endl;
cout<<"1到"<<n<<"之间的素数个数="<<cnt;
cout<<endl;
}
- 艾拉斯托尼素数筛选法
- 素数筛选 欧拉筛选
- 欧拉函数 素数筛选法模板
- 欧拉函数筛选素数
- 线性筛选素数(欧拉筛选)
- O(N)的素数筛选法和欧拉函数
- spoj26246Strange But Easy(欧拉筛选法求素数)
- 小于等于n的素数的个数(埃式筛选法和欧拉筛选)
- 用埃及拉斯托尼筛法求100之内的所有的素数
- 线性筛选素数和线性筛选欧拉函数【bzoj2190]
- 素数计算---改良版埃氏筛选和欧拉筛选
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- Eratoshenes素数筛选法
- 素数--超强筛选法
- 素数筛选法
- 筛选法求素数
- 堆排序算法分析
- web中文乱码
- 第一次体验到逛街的美
- 清军服的“兵”和“勇”
- 14-Managing users
- 艾拉斯托尼素数筛选法
- 8款浏览器对HTML5支持评测
- 安全删除linux旧内核的方法
- 解决SourceInsight两个问题
- advanceDatagrid
- cocos2d sprite执行完动作之后调用回调自行销毁
- 日本人的技术书
- 二叉树的创建,先序、中序、后序遍历的递归实现以及层序遍历
- C#创建SQL Server数据库浅析