您的位置:首页 > 编程语言 > C语言/C++

C语言验证哥德巴赫猜想

2015-04-07 23:41 253 查看
这是我们大一期末考试的一道题。现在想起来了,上机器把代码写出来了,欢迎大家提供意见。

编译环境 : CodeBlocks + GCC

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int prove(int ex)
{
int i;

if(0 == ex || 1 == ex)
{
return 0;
}
for (i = 2; i <= (int)(sqrt(ex)); i++)
{
if(0 == ex % i)
{
return 0;
}
}
return 1;
}/* 判断一个数是否为素数,根据初等数论,对于一个大于2的自然数,只要它不能被2到根号N之间的整数整除时,N就是一个素数 */

int main()
{
int i, q, p;

for(i = 4; i <= 200; i += 2)                      //遍历从4到200的所有偶数
{
for (q = 2; q <= ((i / 2) + 1); q++)          //因为最小的素数是2,所以从2开始尝试用素数的和表示偶数
{
p = i - q;
if(prove(p) && prove(q))
{
printf("%d = %d + %d\n",i,q,p);
break;
}
}
}
return 0;
}


PS:这里只对4到200的偶数进行了验证,亲测可过。我是新手,这些代码也是看了别人的源码后自己写的,但不是直接copy的哦。大家有什么好的建议不吝赐教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言