验证哥德巴赫猜想之一:2000 以内的正偶数(大于等于 4)都能够分解为两个质数之 和。每个偶数表达成形如:4=2+2 的形式。
ast = [i for i in range(4,2001,2)] # 把所有大于4的偶数做成列表
bst = []
for i in range(2,2000): # 找出2000内所有的素数
k = int(i**0.5)
flag = 1
for j in range(2,k+1):
if i % j ==0:
flag = 0
break
if flag:
bst.append(i)
count = 0
for i in ast: # 如果偶数-质数的差在质数的列表里,则count + 1,并终止当前循环计算下一个偶数
for j in bst:
if (i - j) in bst:
count+=1
break
if len(ast) == count: # 如果数目是相等的,则命题正确
print('命题正确')
我误解题意了,题意是给一个正偶数 ,找出和是这个数的两个质数。
import math
def prime(x):
if x==1:
return False
n = int(math.sqrt(x))
for i in range(2,n+1):
if x % i ==0:
return False
return True
def GC(n):
k = 3
while k < n:
t = n - k
if t < k:
break
if prime(k) and prime(t):
return k,t
k += 2
n = int(input())
if n >4:
a,b = GC(n)
print("{}={}+{}".format(n,a,b))
elif n ==4:
print("{}={}+{}".format(4,2,2))