C/C++经典程序训练6---歌德巴赫猜想的证明

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;
        }
    }
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注