C/C++经典程序训练6---歌德巴赫猜想的证明
时间: 1ms 内存:64M
描述:
写一个函数gotbaha, 验证“每个不小于6的偶数都是两个奇素数之和”,输入一个不小于6的偶数n,找出两个素数,使它们的和为n。
输入:
输入一个不小于6的偶数n
输出:
找出两个为素数,使它们的和为n。
示例输入:
80
示例输出:
80=7+73
提示:
参考答案(内存最优[748]):
#include<stdio.h>
int prime(int a){
int i,m=1;
for(i=2;i<a;i++){
if(a%i==0){m=0;break;}
else continue;
}
return m;
}
int gotbaha(int a){
int x=2,y,i,k;
for(i=1;i<a/2;i++){
for(;x<a;x++){
if(prime(x)==0)continue;
else break;
}
y=a-x;
if((prime(y)==1)&&(a==(x+y)))break;
x+=1;
}
printf("%d=%d+%d",a,x,y);
return 0;
}
int main()
{
int n;
int gotbaha(int);
int prime(int);
scanf("%d",&n);
gotbaha(n);
return 0;
}
参考答案(时间最优[0]):
#include <stdio.h>
#include <string.h>
#include"math.h"
int fac(int n)
{
int i,k;
k=sqrt(n);
for(i=2; i<=k; i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int i,j,n,k;
scanf("%d",&n);
for(i=2; i<n-1; i++)
{
j=n-i;
if(fac(i)&&fac(j))
{
printf("%d=%d+%d",n,i,j);
return 0;
}
}
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。