题解 | #查找组成一个偶数最接近的两个素数#
查找组成一个偶数最接近的两个素数
https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9
import math #定义函数判断是否为素数 def is_prime(num): if num < 2: return False elif num == 2: return True elif num == 3: return True else: k,v = math.modf(num**0.5) v = int(v) for i in range(2,v + 1): if num % i == 0:#若num能被i整除,则返回false,否则继续迭代 return False return True def depose_prime_pair(even_n): min_diff = math.inf prime_pair = [None,None] for i in range(1,int(even_n//2) + 1): if is_prime(i) and is_prime(even_n - i): diff = abs(i - (even_n - i)) if diff < min_diff: min_diff = diff prime_pair = [i,even_n - i] return '\n'.join(map(str,prime_pair)) print(depose_prime_pair(int(input())))
定义两个函数is_prime(num),depose_prime_pair(even_n),第一个函数判断该数是否为素数,num取值为2、3时为真,大于3时,取num开平方根后的整数部分,利用range(2,v + 1),遍历可能出现的因子i,若i能被num整除则返回假,否则一直遍历,直到遍历结束,返回真;第二个函数设置初始min_diff为math.diff表示无限大,初始prime_pair为空list,通过range(1,int(even_n//2) + 1)遍历i从而拆分even_n,判断i,even_n - i两数是否为素数,若为素数记录两数之差的绝对值,更新min_diff,并且更新prime_pair
直到遍历结束