LightOJ 1259 - Goldbach`s Conjecture (分解偶数为两个素数之和)
2016-03-08 17:43
483 查看
1259 - Goldbach`s Conjecture
Goldbach's conjecture is one of the oldest unsolved problemsin number theory and in all of mathematics. It states:
Every even integer, greater than 2,can be expressed as the sum of two primes [1].
Now your task is to check whether this conjecture holds forintegers up to
107.
Each case starts with a line containing an integer n (4≤ n ≤ 107, n is even).
n as sum of two primes. Tobe more specific, we want to find the number of
(a, b) where
1) Both aand b are prime
2) a + b= n
3) a ≤b
题意:给你一个偶数n,问有多少种方案找到两个数a,b,且a+b=n,a<=b,a和b是素数
思路:直接打个表就行了,然后暴力验证,但是用int来标记数会超内存,所以说改成bool就好了
ac代码:
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stack>
#include<set>
#include<queue>
#include<vector>
#include<iostream>
#include<algorithm>
#define MAXN 10000010
#define LL long long
#define ll __int64
#define INF 0x7fffffff
#define mem(x) memset(x,0,sizeof(x))
#define PI acos(-1)
#define eps 1e-8
using namespace std;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
ll powmod(ll a,ll b,ll MOD){ll ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
double dpow(double a,ll b){double ans=1.0;while(b){if(b%2)ans=ans*a;a=a*a;b/=2;}return ans;}
//head
bool v[MAXN];
int cnt;
int prime[666666];
void db()
{
cnt=0;v[1]=true;
for(int i=2;i<=10000000;i++)
{
if(!v[i])
{
prime[cnt++]=i;
for(int j=i*2;j<=10000000;j+=i)
v[j]=true;
}
}
}
int main()
{
db();
int t,cas=0,i;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
int ans=0;
for(i=0;i<cnt;i++)
{
if(prime[i]>n/2+1)
break;
if(!v[n-prime[i]]&&n>=prime[i]*2)
ans++;
}
printf("Case %d: ",++cas);
printf("%d\n",ans);
}
return 0;
}
PDF (English) | Statistics | Forum |
Time Limit: 2 second(s) | Memory Limit: 32 MB |
Every even integer, greater than 2,can be expressed as the sum of two primes [1].
Now your task is to check whether this conjecture holds forintegers up to
107.
Input
Input starts with an integer T (≤ 300),denoting the number of test cases.Each case starts with a line containing an integer n (4≤ n ≤ 107, n is even).
Output
For each case, print the casenumber and the number of ways you can expressn as sum of two primes. Tobe more specific, we want to find the number of
(a, b) where
1) Both aand b are prime
2) a + b= n
3) a ≤b
Sample Input | Output for Sample Input |
2 6 4 | Case 1: 1 Case 2: 1 |
Note
1. Aninteger is said to be prime, if it is divisible by exactly two differentintegers. First few primes are 2, 3, 5, 7, 11, 13, ...题意:给你一个偶数n,问有多少种方案找到两个数a,b,且a+b=n,a<=b,a和b是素数
思路:直接打个表就行了,然后暴力验证,但是用int来标记数会超内存,所以说改成bool就好了
ac代码:
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stack>
#include<set>
#include<queue>
#include<vector>
#include<iostream>
#include<algorithm>
#define MAXN 10000010
#define LL long long
#define ll __int64
#define INF 0x7fffffff
#define mem(x) memset(x,0,sizeof(x))
#define PI acos(-1)
#define eps 1e-8
using namespace std;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
ll powmod(ll a,ll b,ll MOD){ll ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;}
double dpow(double a,ll b){double ans=1.0;while(b){if(b%2)ans=ans*a;a=a*a;b/=2;}return ans;}
//head
bool v[MAXN];
int cnt;
int prime[666666];
void db()
{
cnt=0;v[1]=true;
for(int i=2;i<=10000000;i++)
{
if(!v[i])
{
prime[cnt++]=i;
for(int j=i*2;j<=10000000;j+=i)
v[j]=true;
}
}
}
int main()
{
db();
int t,cas=0,i;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
int ans=0;
for(i=0;i<cnt;i++)
{
if(prime[i]>n/2+1)
break;
if(!v[n-prime[i]]&&n>=prime[i]*2)
ans++;
}
printf("Case %d: ",++cas);
printf("%d\n",ans);
}
return 0;
}
相关文章推荐
- Codeforces--630D--Hexagons(规律)
- Codeforces--630D--Hexagons(规律)
- MIGO相关的3个BADI增强点
- 从google的DrawerLayout来看看scroller的使用方法
- django用户认证
- 设置多图片表good_pic(中的商品id)为外键.参考goods商品表中的id,在删除商品的时候.一起删除多图片.
- Got fatal error 1236 from master when reading data from binary log: ‘Slave can not handle replicatio
- 【Google 重磅突破】相比LSTM,NLP 关键任务提升 20%
- codeforces 598D - Igor In the Museum
- django --fields.E304 错误解决方案
- django学习笔记(1)环境搭建
- 使用Leangoo玩转故事地图
- Howto run google-chrome as root
- 通过接口实现压缩文件、目录,修正遍历方式,未添加排除文件操作
- 高效匠人——回归极客google
- go语言编辑器LiteIDE配置
- codeforces Good Bye 2015 E. New Year and Three Musketeers
- codeforces Good Bye 2015 C - New Year and Domino
- codeforces Good Bye 2015 B
- Golang-interface(四 反射)