數論-質數-Goldbach's Conjecture
阿新 • • 發佈:2018-12-16
水題。
#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; }