趣学算法之哥德巴赫猜想的实现

1、哥德巴赫猜想

        任意大于2的偶数,都可以表示成为2个素数之和






2、代码实现

#include 
#include 

using namespace std;

//判断是否是质数
bool isPrime(int n)
{
   if (n < 2)
       return false;
   if (n == 2)
       return true;
   for (int i = 2; i <= (int)sqrt((double)n); i++)
       if (n % i == 0)
           return false;
   return true;
}

//哥得巴赫猜想实现
void gedebahe()
{
    //我们从数字4开始遍历到2000
    for (int i = 4; i <= 2000; i += 2)
    {
        //我们需要把每个数字进行分割,遍历出所有的素数组合和等于i
        for (int j = 2; j <= i; j++)
        {
            //我们需要第一个条件满足是素数的情况下才去判断另外一个数是否为素数
            if (isPrime(j))
            {
                int another = i - j;
                //判断另外一个数是不是素数
                if (isPrime(another))
                {
                    std:cout << "success:" << i << " = " << j << "+" << i - j << std::endl;
                    break;
                }
            }
            //如果每次遍历到了最后,发现没有,要提示猜想错了,程序终止
            if (j == i)
            {
                std::cout << "this thinking is error" << std::endl;
                return;
            }
        }
    }
}

int main()
{
    gedebahe();
    return 0;
}






3、运行结果

success:1988 = 37+1951
success:1990 = 3+1987
success:1992 = 5+1987
success:1994 = 7+1987
success:1996 = 3+1993
success:1998 = 5+1993
success:2000 = 3+1997


你可能感兴趣的:(趣学算法)