本文主要是介绍数论-质数-Goldbach's Conjecture,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
水题。
#include<bits/stdc++.h>
#define rep(i,l,r) for(int i=(l);i<=(r);i++)
#define per(i,r,l) for(int i=(r);i>=(l);i--)
#define random(l,r) ((l)+rand()%((r)-(l)+1))
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int inf=1e9+10,N=1e6+100;
inline int read(){register int sign=0,v=0; register char c;while(!isdigit(c=getchar())) if(c=='-') break;if(c=='-') sign=1; else v=c-48;while(isdigit(c=getchar())) v=v*10+c-48;if(sign==0) return v; else return -v;
}
int n,v[N],prime[N],len;
void Euler(){rep(i,2,N){if(v[i]==0){prime[++len]=i;v[i]=i;}rep(j,1,len){if((prime[j]>v[i])||(prime[j]*i>N)) break;v[i*prime[j]]=prime[j];}}
}
int main(){Euler();while(n=read()){rep(i,1,len) if(v[n-prime[i]]==n-prime[i]){printf("%d = %d + %d\n",n,prime[i],n-prime[i]);break;}}return 0;
}
这篇关于数论-质数-Goldbach's Conjecture的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!