题解 | #查找组成一个偶数最接近的两个素数#

查找组成一个偶数最接近的两个素数

http://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9

  1. 找出小于 n 的全部素数
  2. 分别从素数的两端取最大和最小的素数,相加,比较其和与 n 的大小
[i ->                      <- j]
[2, 3, 5, 7, 11, 13, 17, 19, 23]  # 小于 n 的素数列表
  1. 相等时,说明当前取到的两个素数,可能就是最终结果,存下来,然后任意向中间移动其中一个数,重新比较
  2. 大于 n 时,向前移动较大的素数,使两个素数的和减小,重新比较
  3. 小于 n 时,向后移动较小的素数,使两个素数的和增大,重新比较
  4. 直至两个素数重叠
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)

全部评论
思路清晰,学习了
点赞 回复 分享
发布于 2022-04-06 10:06
点赞 回复 分享
发布于 2022-07-20 10:09

相关推荐

hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
评论
4
1
分享
牛客网
牛客企业服务