2883 - 欧拉版哥德巴赫猜想

通过次数

0

提交次数

0

时间限制 : 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;
}