返回首页 返回题库

哥德巴赫猜想

C++ 中等 GESP五级真题 #素数筛#枚举

题目描述

题面描述

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

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

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

一行,一个大于2的偶数。

输出格式

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

样例1

输入:

4

输出:

1

样例2

输入:

10

输出:

2

数据范围

对于40%的测试点,保证。

对于所有测试点,保证。

时间限制

1.0 s

内存限制

512.0 MB

输入格式


💡 查看提示(先自己想一想再看)
本题核心考察素数筛算法的应用,推荐使用埃氏筛或欧拉筛预处理出范围内的所有素数,之后只需枚举不超过$n/2$的素数,判断$n$减去该素数的结果是否也为素数即可统计有效方案数。需要注意$10^6$的数据范围对筛法效率和内存占用的要求,避免使用时间复杂度过高的单个素数判断方法。
⚙ 开始做这道题 0 人做过 · 0 收藏 · 4 浏览

讨论(0)