您的位置:首页 > 其它

素数的判定

2016-01-28 14:52 260 查看
高效判定:

#include<iostream>//c++
#include<cmath>//数学公式
#include<cstdlib>//malloc
#include<cstring>
#include<string>
#include<cstdio>//输入输出
#include<algorithm>//快排
#include<queue>//队列
#include<functional>//优先队列
#include<stack>//栈
#include<vector>//容器
#include<map>//地图 if continue
const int N=1000;
using namespace std;
bool prime(int a)//默认1是
{
if (a== 2 || a == 3) return true;
if (a% 6 != 1 &&a % 6 != 5) return false;
for(int i = 5; i*i <=a; i += 6)
if (a% i == 0 ||a % (i+2) == 0)
return false;
return true;
}
int main()
{
int i,j,k,n;
while(cin>>i)
{
if(prime(i)) cout<<"T"<<endl;
else cout<<"F"<<endl;
}
return 0;
}

高效打表:

#include<iostream>//c++
#include<cmath>//数学公式
#include<cstdlib>//malloc
#include<cstring>
#include<string>
#include<cstdio>//输入输出
#include<algorithm>//快排
#include<queue>//队列
#include<functional>//优先队列
#include<stack>//栈
#include<vector>//容器
#include<map>//地图 if continue
const int N=1000;
using namespace std;
int a[N+10];
void prime()
{
int i,j,in[6]={0,4,0,0,0,2};
for(i=5;i*i<=N;i+=in[i%6])
for(j=i;i*j<=N;j+=in[j%6])
a[i*j]=1;
}
int main()
{
int i,j,k,n;
void prime();
while(cin>>i)
{
if(i==2||i==3||( (i%6==1||i%6==5)&&a[i]==0 ) )
cout<<"T"<<endl;
else
cout<<"F"<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  素数判定 ACM