题目
输入一个整数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))