C/C++程式訓練6---歌德巴赫猜想的證明 (sdut oj)

SwordsMan98發表於2017-01-27



C/C++程式訓練6---歌德巴赫猜想的證明

Time Limit: 1000MS Memory Limit: 65536KB



Problem Description

驗證“每個不小於6的偶數都是兩個素數之和”,輸入一個不小於6的偶數n,找出兩個素數,使它們的和為n。


Input

輸入一個不小於6的偶數n。


Output

找出兩個素數,使它們的和為n。只需要輸出其中第一個素數最小的一組資料即可。


Example Input

80


Example Output

80=7+73

Hint

Author








參考程式碼



#include<stdio.h>
int h(int n)
{
    int i;
    if(n < 2)
    {
        return 0;
    }
    else if(n == 2)
    {
        return 1;
    }
    else
    {
        for(i = 2; i < n; i++)
        {
            if(n % i == 0)
                break;
        }
        if(i == n)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
}
int f(int n)
{
    int i;
    int flag;
    for(i = 2; i < n; i++)
    {
        flag = h(i);
        if(flag)
        {
            flag = h(n-i);
            if(flag)
            {
                return i;
                break;
            }
        }
    }
}
int main()
{
    int n;
    int a,b;
    int i;
    scanf("%d",&n);
    a = f(n);
    b = n - a;
    printf("%d=%d+%d",n,a,b);
    return 0;
}


相關文章