C语言验证哥德巴赫猜想

这是我们大一期末考试的一道题。现在想起来了,上机器把代码写出来了,欢迎大家提供意见。

编译环境 : CodeBlocks + GCC

#include 
#include 
#include 

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语言)