逼近法(注:这第一种是从两端逼近,不严谨,不见得两数绝对值最小,重点请看第二种)

def isPrime(n):    #判断素数
    if n==2 or n==3:
       return True
    elif n<2:
       return False
    else:
      for i in range(2, int(n**0.5) + 1):
          if n % i == 0:
              return False
      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

下面这个方法是从中间往两边扩,可保证两数绝对值最小,且理论上应该更快些

def isPrime(n):   #判断素数
    if n==2 or n==3:
       return True
    elif n<2:
       return False
    else:
      for i in range(2, int(n**0.5) + 1):
          if n % i == 0:
              return False
      return True

while True:
    try:
        	num=int(input())
            i=0;mid=num//2
            while i<mid:
                a,b=mid-i,mid+i
                if isPrime(a) and isPrime(b):
                    print(a)
                    print(b)
                    break
                else:
                    i+=1
    except:
        break