题解 | #查找组成一个偶数最接近的两个素数#
查找组成一个偶数最接近的两个素数
http://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9
- 找出小于 n 的全部素数
- 分别从素数的两端取最大和最小的素数,相加,比较其和与 n 的大小
[i -> <- j]
[2, 3, 5, 7, 11, 13, 17, 19, 23] # 小于 n 的素数列表
- 相等时,说明当前取到的两个素数,可能就是最终结果,存下来,然后任意向中间移动其中一个数,重新比较
- 大于 n 时,向前移动较大的素数,使两个素数的和减小,重新比较
- 小于 n 时,向后移动较小的素数,使两个素数的和增大,重新比较
- 直至两个素数重叠
n = int(input())
r = [2]
for i in range(3, n): # n <= 4
for j in r:
if i % j == 0:
break
else:
r.append(i)
i = 0
j = len(r) - 1
a = 0
b = 0
while i <= j:
if r[i] + r[j] == n:
a = r[i]
b = r[j]
i += 1
elif r[i] + r[j] > n:
j -= 1
else:
i += 1
print(a)
print(b)