习题解析之:哥德巴赫猜想
【问题描述】
编写验证哥德巴赫猜想的小程序。
1742 年,哥德巴赫给欧拉的信中提出了以下猜想“任一大于 2 的整数都可写成三个质数之和”。常见的猜想陈述为欧拉的版本,即任一大于 2 的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。比如: 24=5+19,其中 5 和 19 都是素数。
输入一个正整数 N,当输入为偶数时,分行按照格式“N=p+q” 输出 N 的所有素数分解,其中 p 、 q 均为素数且 p ≤ q。当输入为奇数或 N<4 时,输出 'Data error!' 。
编程要求
根据提示,在右侧编辑器补充代码,完善哥德巴赫猜想的小程序。
测试说明
平台会对你编写的代码进行测试:
测试输入:
88
预期输出:
88=5+83
88=17+71
88=29+59
88=41+47
【编程思路】
先编写一个函数 is_prime(n) 用于判断整数 n 是否为素数,若n 是素数,返回 True;否则,返回 False。
当输入整数 N 为奇数或 N<4 时,输出 'Data error!' 。
当 N == 4 时,直接输出 4=2+2。
当 N 为大于 4 的偶数时,N 一定能分解为两个奇数素数的和。设 N=p+q,其中 p、q 均为素数且 p ≤ q。故 p <= N // 2。
用循环 for i in range(3,N // 2 + 1,2): 穷举 3 ~ N // 2 范围的奇数 i ,若 i 是素数,且 N - i 也是素数,则 N 可分解为 i 和 N - i 这两个素数的和。
按上面的思路,编写源程序如下:

浙公网安备 33010602011771号