2883 - 欧拉版哥德巴赫猜想
时间限制 : 1 秒
内存限制 : 128 MB
任一大于2的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。请你编程验证此猜想。
题目输入
一行:一个偶数n (2<n<100000),所有输入均为偶数
题目输出
一行:两个素数,中间用空格隔开。其中第一个素数为最小可能。
输入/输出样例
输入格式
8
输出格式
3 5
C语言解答
#include<stdio.h> #include<math.h> int p(int m) { int i,n=sqrt(m); if(m==1) return 0; for(i=2;i<=n;i++) { if(m%i==0) break; } if(i>n) return 1; else return 0; } int main() { int m,a,b; scanf("%d",&m); for(a=2;a<m;a++) { if(p(a)==1) { b=m-a; if(p(b)==1) { printf("%d %d",a,b); break; } } } return 0; }
C++解答
#include<iostream> #include<cmath> using namespace std; bool ss(int ); int main() { int n; cin>>n; int f=0; for(int i=2;i<=n/2;++i) if(ss(i)!=1&&ss(n-i)!=1) { ++f ; cout<<i<<" "<<n-i<<endl; break; } return 0; } bool ss(int a) { int x=2; int b=floor(sqrt(a)); while(x<=b&&(a%x!=0)) ++x; if(x>b)return 0; else return 1; }