如图,怎样保证两个质数差最小
质数列表的长度是不定的,我无法确定从哪里开始检测才能找到两数距离最近的情况
import math
# 判断素数
def isprime(n):
if n == 1:
return False
elif n == 2:
return True
else:
for i in range(2, int(math.sqrt(n) + 1)):
if n % i == 0:
return False
return True
# 从该数一半到1枚举,得到第一个数即为所需
def calculate(start, end, calculate_list):
for i in range(start, end+2, 2):
for j in range(int(i / 2), 0, -1):
if isprime(j) == True and isprime(i - j) == True:
calculate_list.append('{} = {} + {}'.format(i, j, i-j))
break
def main():
for i in range(9998, 109998, 10000): # i为每个文件的终值
calculate_list = []
if i == 9998:
start = 4 # 每个文件的起始值
file_name = 1 # txt文件名称序号
else:
start = i - 9998
file_name = int(start / 10000 + 1)
calculate(start, i, calculate_list)
# 写入文件
with open('Goldbach{}.txt'.format('%02d' % file_name), 'w') as f:
for j in calculate_list:
f.write(j+'\n')
if __name__ == '__main__':
main()
从给定数字的半数(即x/2)向后查找,找到的第一个素数z1即为差最小的两个素数中较大的那个
较小的那个为x-z1