首页 > 代码库 > LightOJ 1259 Goldbach`s Conjecture 素数打表
LightOJ 1259 Goldbach`s Conjecture 素数打表
题目大意:求讲一个整数n分解为两个素数的方案数。
题目思路:素数打表,后遍历 1-n/2,寻找方案数,需要注意的是:C/C++中 bool类型占用一个字节,int类型占用4个字节,在素数打表中采用bool类型可以节约不少内存。
#include<iostream>#include<algorithm>#include<cstring>#include<vector>#include<stdio.h>#include<queue>#include<math.h>#define INF 0x3f3f3f3f#define MAX 10000005#define Temp 10000005using namespace std;int p[664589],cnt=0;bool vis[MAX];void GetPrime()//素数打表{ memset(vis,false,sizeof(vis)); memset(p,0,sizeof(p)); for(int i=2;i<MAX;i++) { if(!vis[i]) { p[++cnt]=i; for(int j=i+i;j<MAX;j+=i) { vis[j]=true; } } }}int main(){ GetPrime(); int n,T,sum,cns=0; scanf("%d",&T); while(T--) { sum=0; scanf("%d",&n); for(int i=1;p[i]<=n/2;i++)//遍历寻找方案数 { if(vis[n-p[i]]==false) sum++; } printf("Case %d: %d\n",++cns,sum); } return 0;}
LightOJ 1259 Goldbach`s Conjecture 素数打表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。