洛谷刷题C++语言 | P1304 哥德巴赫猜想

学习C++从娃娃抓起!记录下洛谷C++学习和备考过程中的题目,记录每一个瞬间。

附上汇总贴:洛谷刷题C++语言 | 汇总_热爱编程的通信人的博客-CSDN博客


【题目描述】

输入一个偶数 N,验证 4∼N 所有偶数是否符合哥德巴赫猜想:任一大于 2 的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 10,10=3+7=5+5,则 10=5+5 是错误答案。

【输入】

第一行输入一个正偶数 N

【输出】

输出 (N−2)/2 行。对于第 i 行:

首先先输出正偶数 2i+2,然后输出等号,再输出加和为 2i+2 且第一个加数最小的两个质数,以加号隔开。

【输入样例】

10

【输出样例】

4=2+2
6=3+3
8=3+5
10=3+7

【代码详解】

#include <bits/stdc++.h>
using namespace std;
bool prime(int n) {
    if (n<=1) return false;
    for (int i=2; i<=sqrt(n); i++) {
        if (n%i==0) return false;
    }
    return true;
}
void gold(int n)
{
    for (int i=2; i<=n; i++) {
        if (prime(i) && prime(n-i)) {
            printf("%d=%d+%d\n", n, i, n-i);
            return;
        }
    }
}
int main()
{
    int n;
    cin >> n;
    for (int i=4; i<=n; i+=2) {
        gold(i);
    }
    return 0;
}

【运行结果】

10
4=2+2
6=3+3
8=3+5
10=3+7

猜你喜欢

转载自blog.csdn.net/guolianggsta/article/details/132839595