HDU1397_Goldbach's Conjecture_素数筛选法
2011-11-07 00:20
295 查看
题目大意:
让你输入n,然后求出n里面可以拆分为多少对素数的和(两个素数可以是相同的)。
解题思路:
先把素数打表,然后用素数筛选法得结果。
[code]
#include
#include
using namespace std;
int p[8]={4,2,4,2,4,6,2,6};
int num[35000];
int Prime(int n)//判断素数
{
int i=7,j,q;
if(n==1)//1不是素数,也不是合数
return 0;
if(n==2||n==5||n==3)
return 1;
if(n%2==0||n%3==0||n%5==0)
return 0;
q=(int)sqrt((double)n);
for(;i<=q;)
{
for(j=0;j<8;j++)
{
if(n%i==0)return 0;
i+=p[j];
}
if(n%i==0)return 0;
}
return 1;
}
void initPrime()
{
memset(num,0,sizeof(num));
int end=(int)pow(2.0,15);
for(int i=1;i<=end;i++)
{
if(Prime(i))
num[i]=1;
}
}
int main(void)
{
int n;
initPrime();
while(cin>>n,n)
{
int count=0;
for(int i=1;i<=n/2;i++)
{
if(num[i] && num[n-i])
count++;
}
cout<
让你输入n,然后求出n里面可以拆分为多少对素数的和(两个素数可以是相同的)。
解题思路:
先把素数打表,然后用素数筛选法得结果。
[code]
#include
#include
using namespace std;
int p[8]={4,2,4,2,4,6,2,6};
int num[35000];
int Prime(int n)//判断素数
{
int i=7,j,q;
if(n==1)//1不是素数,也不是合数
return 0;
if(n==2||n==5||n==3)
return 1;
if(n%2==0||n%3==0||n%5==0)
return 0;
q=(int)sqrt((double)n);
for(;i<=q;)
{
for(j=0;j<8;j++)
{
if(n%i==0)return 0;
i+=p[j];
}
if(n%i==0)return 0;
}
return 1;
}
void initPrime()
{
memset(num,0,sizeof(num));
int end=(int)pow(2.0,15);
for(int i=1;i<=end;i++)
{
if(Prime(i))
num[i]=1;
}
}
int main(void)
{
int n;
initPrime();
while(cin>>n,n)
{
int count=0;
for(int i=1;i<=n/2;i++)
{
if(num[i] && num[n-i])
count++;
}
cout<
相关文章推荐
- POJ 2262 Goldbach's Conjecture ( 筛选法求素数 )
- HDOJ 1397:Goldbach's Conjecture 哈希加筛选法求素数
- POJ - 2262 - Goldbach's Conjecture(筛选素数)
- POJ 2262 Goldbach's Conjecture 素数筛选
- Goldbach's Conjecture(筛选法求素数)
- zoj 1951 Goldbach's Conjecture(素数筛选继续水)
- POJ2262_Goldbach's Conjecture【素数判断】【水题】
- poj 2262 Goldbach's Conjecture 素数筛
- POJ2909_Goldbach's Conjecture【素数判断】【水题】
- POJ 2909 Goldbach's Conjecture(我的水题之路——任一数为素数对之和)
- POJ2262 Goldbach's Conjecture(素数问题)
- POJ 2262 Goldbach's Conjecture(素数表)
- Goldbach's Conjecture(数论--素数判断)
- Poj 2662,2909 Goldbach's Conjecture (素数判定)
- POJ 2909 Goldbach's Conjecture(素数表)
- (Relax 数论1.13)POJ 2909 Goldbach's Conjecture(欧拉筛法的应用:给出一个偶数,要求在这个偶数的范围内,有几对素数和是等于这个偶数的,注意素数对的不重复性! )
- POJ 2262 Goldbach's Conjecture(素数)
- HDU1397 POJ2909 UVA686 UVALive5674 ZOJ1657 Goldbach's Conjecture(II)【水题+打表】
- POJ 2262/ ZOJ 1951:Goldbach\'s Conjecture - 筛法打素数表
- HDOJ 1397 Goldbach's Conjecture(快速筛选素数法)