素数的判定
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;
}
#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网址
- 1272 小希的迷宫
- 1272 小希的迷宫
- hdu 1250 大数相加并用数组储存
- 矩阵的乘法操作
- 蚂蚁爬行问题
- 蚂蚁爬行问题
- 求两个数的最大公约数【ACM基础题】
- 打印出二进制中所有1的位置
- 杭电题目---一只小蜜蜂
- HDOJ 1002 A + B Problem II (Big Numbers Addition)
- 初学ACM - 半数集(Half Set)问题 NOJ 1010 / FOJ 1207
- 初学ACM - 组合数学基础题目PKU 1833
- POJ ACM 1002
- POJ 2635 The Embarrassed Cryptographe
- POJ 3292 Semi-prime H-numbers
- POJ 2773 HAPPY 2006
- POJ 3090 Visible Lattice Points