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

问题:验证“每个不小于6的偶数都是两个素数之和”,输入一个不小于6的偶数n,找出两个素数,使它们的和为n。

使用语言:C.

输入:输入一个不小于6的偶数n。

输出:找出两个素数,使它们的和为n。只需要输出其中第一个素数最小的一组数据即可。

例:

输入 80

输出 80=7+73

#include <stdio.h>
int f(int m)
{
    int i;
    for(i=2;i<m;i++)//从2开始循环,以保证第一个素数是符合条件的最小素数。
    {
        if(m%i==0)
            break;
    }
    if(i==m)//当为素数时,必有i=m,这时用if直接设置返回值。
    {
        return -1;
    }
    else
    {
        return 1;
    }
}//定义一个判断“m”是不是素数的函数。
    int main()
{
    int n;
    int i=3;
    scanf("%d",&n);
    for ( i=3;i<n;i++)
    {
        if(f(i)==-1&&i%2==1&&f(n-i)==-1&&(n-i)%2==1)
        {
            printf("%d=%d+%d\n",n,i,n-i);
            break;
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/ciarian/p/11930074.html