A40160. 验证哥德巴赫猜想2000 以内的不小于 4 的正偶数都能够分解为两个素数之和, 验证哥德巴赫猜想对 2000 以内的数分解为两部分, 然后判断分解出的两个正整数是否均为素数。 若是, 则满足题意, 否则应重输入: 每次输入一个 2000 以内的不小于 4 的正偶数 n。输出: 输出 n 能被分解成的素数 a 和 b, 如果不止一组解, 则输出其中 a 最小的那组解即可。请你补全代码。import…
题目描述
验证哥德巴赫猜想
2000 以内的不小于 4 的正偶数都能够分解为两个素数之和, 验证哥德巴赫猜想对 2000 以内的
数分解为两部分, 然后判断分解出的两个正整数是否均为素数。 若是, 则满足题意, 否则应重
输入: 每次输入一个 2000 以内的不小于 4 的正偶数 n。
输出: 输出 n 能被分解成的素数 a 和 b, 如果不止一组解, 则输出其中 a 最小的那组解即可。
请你补全代码。
import math
# 判断是否为素数
def fun(n):
if n == 2:
return 1
if n % 2 == 0:
return 0
i = 3
while i <= math.sqrt(n):
if ___①___ :
return 0
i += 2
return 1 # n 是除 2 以外的素数返回 1
# 验证哥德巴赫猜想
def guess(n):
k = 0
i = 2
while i <= (n // 2):
if fun(i):
if fun(n - i):
print("%d %d\n" % ( ___②___ ))
___③___
if i != 2:
i += 1
if k == 1:
___④___ #结果得到验证, 跳出循环
i += 1
while True:
n = input("请输入 2000 以内>=4 的正偶数: (输入'stop'结束运行)")
if n=="stop":
break
else:
___⑤___ # 调用方法验证哥德巴赫猜想
参考答案
def guess(n):
k = 0
i = 2
while i <= (n // 2):
if fun(i):
if fun(n - i):
print("%d %d\n" % (i, n - i))
k = 1
if i != 2:
i += 1
if k == 1:
break #结果得到验证, 跳出循环
i += 1
while True:
n = input("请输入 2000 以内>=4 的正偶数: (输入'stop'结束运行)")
if n=="stop":
break
else:
guess(int(n)) # 调用方法验证哥德巴赫猜想答案解析
评分标准:
① n % i == 0;(2 分)
② i, n - i ;(2 分)
③ k = 1;(2 分)
④ break;(2 分)
⑤ guess(int(n))。 (2 分)