您的位置:首页 > 其它

Eratosthenes筛法(埃氏筛法)

2017-10-26 09:29 399 查看

一、朴素的筛法

#include<iostream>
#include<istream>
#include <string.h>
#include<stdio.h>
using namespace std;
int const maxn = 100000;
int vis[1000010];
int main()
{
memset(vis,0,sizeof(vis));
vis[0] = 1;
vis[1] = 1;
int n;
for(int i = 2 ;i <= maxn; i++)
for(int j = i*2; j <= maxn; j+=i)
vis[j] = 1;
scanf("%d",&n);
if(!vis
)
printf("yes\n");
else
printf("no\n");
return 0;
}


二、优化的筛法

#include<iostream>
#include<istream>
#include <string.h>
#include <math.h>
#include<stdio.h>
using namespace std;
int const maxn = 100000;
int vis[1000010];
int main()
{
int n;
int m=sqrt(maxn+0.5);
memset(vis,0,sizeof(vis));
for(int i=0<
4000
/span>;i<2;i++)
vis[i]=1;
for(int i=2;i<=m;i++) if(!vis[i])
for(int j=i*i;j<=maxn;j+=i) vis[j]=1;
scanf("%d",&n);
if(!vis
)
cout << "yes" <<endl;
else
cout << "no" << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: