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

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

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

直到遍历结束

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务