C语言验证哥德巴赫猜想

C语言验证哥德巴赫猜想:任一充分大的偶数,可以用两个素数之和表示,例如: 4 = 2 + 2 6 = 3 + 3 .. 9 8 = 1 9 + 7 9 从键盘上输入两个整数m和n,将m和n之间的所有偶数写成素数之和。

(1)prime函数需要判断n是否小于2
(2)2也是素数,Goldbach 函数中,k需要从2开始
(3)题目要求输出所有偶数的素数和,所以Goldbach函数中,需要判断i是否是偶数
代码修改如下:

#include<stdio.h>
#include<math.h>
void Goldbach ( int a , int b );
int main ()
{
    int n,m ;
    printf ("请输入两个正整数( n < m ):");
    scanf ("%d%d",&n ,&m );
    if(n<m) Goldbach(n,m);
    else Goldbach (m,n);
    return 0;
}

int prime ( int n )
{
    int i ,m = sqrt((double)n);
    if(n<2) return 0;
    for (i=2; i <= m; i++)
        if (n%i==0)
            return 0;

    return 1;
}

void Goldbach ( int a , int b )
{
    int i, k ;
    for (i=a;i<=b;i++)
    {
        if(i%2==1)
            continue;
        k=2;
        while(k<=i/2)
        {
            if ( prime(k)*prime( i-k )) break ;
            k =k+1;
        }

        if( k<=i/2)printf("%4d=%4d+%4d\n",i,k,i-k);
    }

}

#include<stdio.h>

#include<math.h>

void Goldbach ( int a , int b );

int main ()

{

 int n,m ;

printf ("请输入两个正整数( n < m ):");

 scanf ("%d%d",& n ,& m );

 if(n<m) Goldbach (n,m);

 else Goldbach (m,n);

  return 0;

}

int prime ( int n )

{

  int i ,m = sqrt ( n );

   for (i=2; i <= m ; i ++)

        if ( n %i==0)

        return 0;

   return 1;

}

void Goldbach ( int a , int b )

{int i, k ;

for (i=a;i<=b;i++)

{k=3;

while(k<=i/2)

{if ( prime(k)*prime( i-k )) break ;

k =k+2;

}

if( k<=i/2)printf("%4d=%4d+%4d\n",i,k,i-k);

}

}