1. 程式人生 > 其它 >1388: 驗證哥德巴赫猜想(函式專題)

1388: 驗證哥德巴赫猜想(函式專題)

技術標籤:c語言部分acm練習題演算法c語言

1388: 驗證哥德巴赫猜想(函式專題)

1.描述

哥德巴赫猜想大家都知道一點吧。我們現在不是想證明這個結論,而是對於任給的一個不小於6的偶數,來尋找和等於該偶數的所有素數對。做好了這件實事,就能說明這個猜想是成立的。
要求程式定義一個prime()函式和一個main()函式,prime()函式判斷一個整數n是否是素數,其餘功能在main()函式中實現。
int prime(int n)
{
//判斷n是否為素數, 若n為素數,本函式返回1,否則返回0
}

輸入
一個偶數M (M是6到1000000之間的一個偶數).

輸出
輸出和等於該偶數的所有素數對a和b,按a遞增的順序輸出,(a,b)和(b,a)被視為同一個素數對。

樣例輸入
40
樣例輸出
3 37
11 29
17 23

2.程式碼

#include<stdio.h>
#include<math.h>
int prime(int n)
{
    int i;
    if(n==1)
    {
        return 0;
    }
    for(i=2; i<=sqrt(n); i++)
    {
        if(n%i==0)
        {
            return 0;
        }
    }
    return 1;
}
int main()
{
    long long
int m,t; int i,j=0,a[10001],b[10001]={0},s,k; scanf("%lld",&m); for(i=1;i<=m;i++) { s=prime(i); if(s==1) { a[j]=i; j++; } } for(i=0;i<j;i++) { for(k=0;k<j;k++) { if(a[i]+a[k]
==m&&b[k]==0&&b[i]==0) { printf("%d %d\n",a[i],a[k]); b[k]=1;b[i]=1; } } } return 0; }