Goldbach`s Conjecture (数论,素数打表)
2017-05-08 17:54
429 查看
题目来源:https://vjudge.net/problem/LightOJ-1259
【题意】
问一个大于2的偶数可以由多少组素数和组成。
坑点:素数打表的判断是否为素数的数组一定要是bool型,不然MLE。
【思路】
素数打表,然后判断就可以了。
【代码】
【题意】
问一个大于2的偶数可以由多少组素数和组成。
坑点:素数打表的判断是否为素数的数组一定要是bool型,不然MLE。
【思路】
素数打表,然后判断就可以了。
【代码】
#include<stack> #include<queue> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<iostream> #include<string> #define mem(a,b) memset(a,b,sizeof(a)) using namespace std; const int INF=1e9; typedef long long LL; bool b[10000000+10]; int prime[700000+10]; int num=1; int E_F(int p,int *a) { int Left=1,Right=num,mid; while(Left<Right) { mid=(Right+Left)/2; printf("%d %d %d\n",mid,Left,Right); if(a[mid]==p) return mid; else if(a[mid]<p) Left=mid; else Right=mid-1; } return Left; } int main() { mem(b,0); b[0]=b[1]=1; for(int i=2;i<=10000000;i++) { if(!b[i]) { prime[num++]=i; for(int j=i*2;j<=10000000;j+=i) { b[j]=1; } } } int T,cases=1; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); int mid=n/2; int pos=E_F(mid,prime); int ans=0; for(int i=1;i<=pos;i++) { if(!b[n-prime[i]]) ans++; } printf("Case %d: %d\n",cases++,ans); } }
相关文章推荐
- LightOj 1259-Goldbach`s Conjecture(素数打表)
- LightOJ - 1259 Goldbach`s Conjecture 素数打表+暴力(我见过的最快的打表姿势)
- LightOJ-1259 Goldbach`s Conjecture 数论 素数筛
- [kuangbin带你飞]专题十四 数论基础 F - Goldbach`s Conjecture (线性素数筛)
- lightoj-1289(数论+素数打表)
- hdu1319 Prime Cuts(数论:素数打表,不难但是恶心)
- PKU2262 Goldbach's Conjecture 数论-素数
- ZOJ 1951 Goldbach's Conjecture(素数打表)
- hdoj 1397 Goldbach's Conjecture (大数素数打表)
- Hdu 4715 Difference Between Primes (2013网络赛 warm up) & LightOJ 1259 Goldbach`s Conjecture(素数和差)
- 【LightOJ1259】Goldbach`s Conjecture(数论)
- LightOJ 1259 Goldbach`s Conjecture(数论)
- Goldbach`s Conjecture 【素数线性筛法】
- 【LightOJ1259】Goldbach`s Conjecture(数论)
- LightOJ 1259 Goldbach`s Conjecture (哥德巴赫猜想 + 素数筛选法)
- LIGHT OJ 1259 - Goldbach`s Conjecture(素数筛选)
- Anti-Goldbach's Conjecture 素数打表
- hdu 1262 寻找素数对 数论 打表。
- 数论知识(1)-------------素数打表
- POJ 2262 Goldbach's Conjecture 素数打表