我这个遇到数字过大的,肯定要超时了,不过算法应该是对的

def isss(n):
    tmp=[]#定义一个临时数组
    for i in range(1,1+n):
        if n%i==0:
            tmp.append(i)
    if len(tmp)==2:#只有1和自身,说明是素数,lenth只有2
        return n
    else:
        return None
while True:
    try:
        n=int(input())
        tmp=[]#专门用来装素数
        for i in range(1,1+n):
            if isss(i)==None:
                continue
            else:
                tmp.append(isss(i))
        tmp.append(1)#这个算法不会把1算进来,所以我自己加了
        #print(tmp)#测试用
        tmpsh=[]#定义一个满足素数和的条件
        for i in tmp:
            for j in tmp:
                if i+j==n:#如果两个素数相加等于n,那么就满足条件
                    tmpsh.append([i,j])
        #print(tmpsh)#测试用
        zxz=n#设置一个最小值为n,相差值肯定不会超过n
        a=0
        b=0
        for i in tmpsh:
            if abs(i[0]-i[1])<zxz:#如果绝对值小于最小值
                zxz=abs(i[0]-i[1])
                a=i[0]
                b=i[1]
            else:#否则继续
                continue
        if a<=b:#最终判定下大小,进行输出。
            print(a)
            print(b)
        else:
            print(b)
            print(a)
    except:
        break

还是大佬的代码更简洁啊

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