东方博宜OJ 1135:歌德巴赫猜想 ← 素数 + 函数

​【题目来源】
https://oj.czos.cn/p/1135

【题目描述】
任一个大于等于 4 的偶数都可以拆分为两个素数之和。
从键盘读入一个整数 n,请将小于等于 n 的偶数拆分为 2 个质数之和,列出所有方案。

【输入格式】
一个整数 n (4≤n≤200)

【输出格式】
将小于等于 n 的偶数拆分为 2 个质数之和,列出所有方案,输出格式请参考样例输出。

【输入样例】
10

【输出样例】
4=2+2
6=3+3
8=3+5
10=3+7
10=5+5

【数据范围】
4≤n≤200​​​​​​​

【算法分析】
● 判断素数的经典代码

bool isPrime(int n) {
    if(n<2) return false;
    for(int i=2; i*i<=n; i++) {
        if(n%i==0) return false;
    }
    return true;
}

【算法代码】

#include <bits/stdc++.h>
using namespace std;

bool isPrime(int n) {
    if(n<2) return false;
    for(int i=2; i*i<=n; i++) {
        if(n%i==0) return false;
    }
    return true;
}

int main() {
    int n;
    cin>>n;
    for(int x=4; x<=n; x+=2) {
        for(int p1=2; p1<=x/2; p1++) {
            int p2=x-p1;
            if(isPrime(p1) && isPrime(p2)) {
                cout<<x<<"="<<p1<<"+"<<p2<<endl;
            }
        }
    }

    return 0;
}

/*
in:
10

out:
4=2+2
6=3+3
8=3+5
10=3+7
10=5+5
*/



【参考文献】
https://blog.csdn.net/xiachake/article/details/152418045
https://blog.csdn.net/hnjzsyjyj/article/details/148121301
 

​

posted @ 2026-08-19 18:12  Triwa  阅读(15)  评论(0)    收藏  举报