先找出0到该数里的质数,存到序列里,然后再找加起来等于该数的两个数,最后比较距离,取距离最小的.
import math while True: try: num1 = int(input()) prime_num = [] for i in range(num1): if(i >= 2): flag = 0 for j in range(1,math.ceil(i**0.5)): if(i%(j+1) == 0): flag = 1 break if(flag == 0): prime_num.append(i) m = 0 n = 0 distance = num1 for i in range(len(prime_num)): for j in range(len(prime_num)-1 , -1 , -1): if(prime_num[i] + prime_num[j] == num1): distance1 = abs(prime_num[j] - prime_num[i]) if(distance1 < distance): m = prime_num[i] n = prime_num[j] distance = distance1 print(m) print(n) except: break