【MAC 上学习 C++】Day 37-3. 实验4-2-3 验证“哥德巴赫猜想” (20 分)

实验4-2-3 验证“哥德巴赫猜想” (20 分)

1. 题目摘自

https://pintia.cn/problem-sets/13/problems/448

2. 题目内容

数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。

输入格式:

输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。

输出格式:

在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。

输入样例:

24

输出样例:

24 = 5 + 19

3. 源码参考
#include 
#include 

using namespace std;

int prime(int n);

int main()
{
    int n;

    cin >> n;

    for(int i = 2; ;i++)
    {
        if(prime(i) && (prime(n - i)))
        {
            cout << n << " = " << i << " + " << (n - i) << endl;
            break;
        }
    }

    return 0;
}

int prime(int n)
{
    int m = sqrt(n);

    if(n < 2)
    {
        return 0;
    }

    for(int i = 2; i <= m; i++)
    {
        if(n % i == 0)
        {
            return 0;
        }
    }

    return 1;   
}

你可能感兴趣的:(【MAC 上学习 C++】Day 37-3. 实验4-2-3 验证“哥德巴赫猜想” (20 分))