夜雨聆风学习资料网

ARTICLE · 1043036

【GESP真题】GESP五级 / CSP-J 题解:luogu-P17455 [GESP202609 五级] 哥德巴赫猜想

【GESP真题】GESP五级 / CSP-J 题解:luogu-P17455 [GESP202609 五级] 哥德巴赫猜想
         💡 GESP 考级与信奥算法精选       
         【GESP真题】GESP五级 / CSP-J 题解:luogu-P17455 [GESP202609 五级] 哥德巴赫猜想       
✍️ 作者:OneCoder🏷️ 分类:GESP / 五级 / 数论 / CSP-J

CCF GESP 2026年9月认证(第十五次认证)C++ 五级试题,洛谷 P17455。本题严格遵循 CCF GESP 官方大纲规范,重点考察初等数论·欧拉线性筛与素数拆分。题目逻辑严密,模型典型,是深入理解与掌握信奥核心考点的经典范例。

P17455 [GESP202609 五级] 哥德巴赫猜想

🔗 洛谷原题传送门:P17455

🔹 题目描述

众所周知,哥德巴赫猜想是说,任何大于 2 的偶数都能写成两个质数(素数)之和。例如:

聪明的你肯定想知道,对于大于 2 的偶数 ,它有多少种写成两个质数之和的方法。例如 4、6 和 8 都只有一种方法,10 有两种方法。请你编写程序计算这个问题的答案。

在本题中,我们认为两种方案不同,当且仅当两种分解方案包含的素数互不相同;即  和  是同一种方案,不能重复计数。

🔹 输入格式

一行,一个大于 2 的偶数 

🔹 输出格式

一行,一个整数,表示将  写成两个质数之和的方法数。

🔹 输入输出样例

输入 #1

4

输出 #1

1

输入 #2

10

输出 #2

2

🔹 说明/提示

数据范围

对于  的测试点,保证 

对于所有测试点,保证 


🔹 题目分析与解题思路

  1. 线性素数筛预处理
    ,若对每个数调用单次  试除判断,总复杂度过高。标准五级解法是采用**欧拉线性筛(Linear Sieve)**在  时间内预处理出  的所有素数及布尔查表数组 is_prime
  2. 无序对枚举避免重复
    :要求  且无序,只需枚举质数 ,此时必有 。若 is_prime[q] 同样为真,则答案计数加一。
  3. 时空复杂度
    :线性筛仅耗时约 ,内存仅需 ,完全胜任  规模。

🔹 完整参考代码 (C++11)

cpp
/** * Problem: luogu-P17455 * Standard: C++11 (CCF GESP 官方大纲规范) * Author: OneCoder */#include<iostream>#include<vector>usingnamespace std;constint MAXN = 1000000;bool is_prime[MAXN + 1];vector<int> primes;// 欧拉线性筛:保证每个合数仅被其最小质因数筛掉一次voidsieve(int limit){for (int i = 2; i <= limit; ++i) is_prime[i] = true;for (int i = 2; i <= limit; ++i) {if (is_prime[i]) {            primes.push_back(i);        }for (int p : primes) {if (i * p > limit) break;            is_prime[i * p] = false;if (i % p == 0break;        }    }}intmain(){    ios::sync_with_stdio(false);    cin.tie(nullptr);int n;if (!(cin >> n) || n <= 2 || n % 2 != 0) {return0;    }sieve(n);int count = 0;// 枚举较小质数 p <= n / 2,保证方案不重复for (int p : primes) {if (p > n / 2break;int q = n - p;if (is_prime[q]) {            count++;        }    }    cout << count << "\n";return0;}           
📚 往期关联真题与系统化备考:

           本站已收录超 900+ 篇计算机与算法专题。由于微信公众号不支持外部链接直接跳转,建议点击左下角「阅读原文」直达个人网站,即可使用全局检索(Ctrl+K)、在线复制代码与浏览完整知识库!         

长按关注「OneCoder」公众号

相关学习资料