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

152 阅读1分钟

1. 题目

www.nowcoder.com/questionTer…

image.png

2. 考点

  1. 质数:只能被1和本身整除的数 1不是质数
  2. 将遍历过的质数使用列表或者字典保存起来,用于num -i in result进行判断
  3. 获取差值最小的质数组合

核心代码

import math


def is_prime_num(x):
    # 判断是否为素数
    if x == 2:
        return True
    if x & 1 == 0:
        return False
    for i in range(3, int(math.sqrt(x)) + 1, 2):
        if x % i == 0:
            return False
    return True


def test(num):
    result = []
    res = []
    for i in range(2, num):
        if is_prime_num(i):
            result.append(i)
            if num - i in result:
                res.append(sorted([num - i, i]))
    res.sort(key=lambda x: x[1] - x[0])
    print(res[0][0])
    print(res[0][1])


if __name__ == '__main__':
    test(int(input()))