Python--差值最小的质数和

题目

输入一个整数N,分解成两个质数的和,求差值最小的质数组的差值

知识点

1.判断质数时,只需要从2~N//2+1判断即可

2.从数值N的中间开始分割移动减少了判断

3.第一次寻找到的就是最小差值,可以直接输出,结束循环,减少判断次数

4.left左边数值和right右边数值是属于在从1~N-1的连续数组里面寻找,加和即为数组最后一个值,所以可以同时移动

代码

N=int(input())
ans=[]
path=[]
def isPrimeNumber(num):
    for i in range(2,num//2+1):#一直除到num的中间值即可,因为后面的值均为前面一半的二倍,一定不为质数
        if(num%i==0):
            return False
    return True
if N%2==0:
    left = N//2
    right = N//2
else:
    left=(N-1)//2
    right=(N+1)//2
while left>0 and right<N:
    if isPrimeNumber(left) and isPrimeNumber(right) and left+right==N:
        print(right-left)
        break#只求最小值时,最先找到的就是最小值,直接输出,并且结束循环即可
        # path.append((left,right))
        # ans.append(right-left)
    left-=1
    right+=1
# print(path)
# print(ans,min(ans))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值