数学趣题——哥德巴赫猜想的近似证明
2010-05-25 09:27
281 查看
一、分析
可在较小范围内使用枚举法,验证每一个偶数是否能表示成为两个素数的和。二、源码
#include <string.h>
#include <stdio.h>
int IsGoldbach(int a);
int TestifyGB_Guess(int low, int high);
int IsPrime(int i);
int main()
{
printf("Test 1-100 is Goldbach Guess\n");
if (TestifyGB_Guess(1, 100))
printf("in 1-100 guess is right\n");
else
printf("guess is wrong\n");
return 0;
}
int TestifyGB_Guess(int low, int high)
{
int i, j = 0;
int flag = 0;
for (i = low; i <= high; ++i)
{
if (i % 2 == 0 && i > 2)
{
if (IsGoldbach(i))
{
j++;
if (j == 5)
{
printf("\n");
j = 0;
}
}
else
{
flag = 1;
break;
}
}
}
if (flag == 0)
return 1;
else
return 0;
}
int IsGoldbach(int a)
{
int i, flag = 0;
for (i = 1; i <= a / 2; ++i)
{
if (IsPrime(i) && IsPrime(a - i))
{
flag = 1;
printf("%d=%d+%d ", a, i, a-i);
break;
}
}
if (flag == 1)
return 1;
else
return 0;
}
int IsPrime(int i)
{
int n, flag = 1;
if (1 == i)
flag = 0;
for (n=2; n<i; n++)
{
if (i%n == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
return 1;
else
return 0;
}