一、朴素的筛法
#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[n])
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;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[n])
cout << "yes" <<endl;
else
cout << "no" << endl;
return 0;
}