逼近法
def isPrime(num):#定义一个素数判断函数
for i in range(2,int(pow(num,0.5))+1):
if num%i==0:
return False
else:
pass
return True
while True:
try:
n=int(input())
for i in range(2,n//2+1):#截断整数部分
if isPrime(i)and isPrime(n-i):#从两端开始逼近
a,b=i,n-i
print(a);print(b)
except:
break
下面这个方法是从中间往两边扩,理论上应该更快些
import math
def isPrime(n):
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
while True:
try:
num ,start= int(input()) // 2,1
if num%2==1:
start=0
for i in range(start, num, 2):#确定了奇偶,步子就大些
a, b = num + i, num - i
if isPrime(a) and isPrime(b):
print(b)
print(a)
break
except:
break