任务描述
本关任务:编写哥德巴赫猜想的小程序。

相关知识
为了完成本关任务,你需要掌握:

哥德巴赫猜想
1742 年,哥德巴赫给欧拉的信中提出了以下猜想“任一大于 2 的整数都可写成三个质数之和”。常见的猜想陈述为欧拉的版本,即任一大于 2 的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。比如: 24=5+19,其中 5 和 19 都是素数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

输入一个正整数 N,当输入为偶数时,分行按照格式“N = p + q” 输出 N 的所有素数分解,其中 p 、 q 均为素数且 p ≤ q。当输入为奇数或 N<4 时,输出 ‘Data error!’ 。

编程要求
根据提示,在右侧编辑器补充代码,完善哥德巴赫猜想的小程序。

测试说明
平台会对你编写的代码进行测试:

测试输入:88;
预期输出:

1. 88=5+83 
 2. 88=17+71 
 3. 88=29+59 
 4. 88=41+47
def is_prime(n):
   """判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False"""
   #====================Begin===================================
   prime = True
   if n <= 1:
       prime = False
       return prime
   elif n == 2:
       return prime
   else :
       for i in range(2,n):
           if n % i == 0:
               prime = False
               break
       return prime
   #======================End=================================
def goldbach_conjecture(num):
   """ 哥德巴赫猜想, 接收一个不小于4的正整数为参数。
   当参数为不小于4的偶数时,将其分解为两个素数的加和,按小数+数的格式输出。
   有多种组合时全部输出,但不输出重复的组合,例如输出8=3+5,不输出8=5+3。
   参数为奇数或小于4时,输出'Data error!'
   """
   #====================Begin===================================
   if num % 2 == 1 or num < 4:
       print('Data error!')
   elif num % 2 == 0:
       num_2 = int(num/2)
       for i in range(2, num_2):
           for j in range(num_2+1, num, 2):
               if is_prime(i) and is_prime(j) and (i + j == num):
                   print(f'{num}={i}+{j}')
   #======================End=================================

if __name__ == '__main__':
   positive_even = int(input())        # 输入一个正数
   goldbach_conjecture(positive_even)

这个题思路是正确的,但是如果输入的数值过大,他的效率非常低,运行超时,因此我又改为了下面的方法,将所有的素数先查找并存储起来,再存起来的列表里面去循环找到需要的素数速度就提升很多

def is_prime(n):
    """判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False"""
    #====================Begin===================================
    prime = True
    if n <= 1:
        prime = False
        return prime
    elif n == 2:
        return prime
    else :
        for i in range(2,n):
            if n % i == 0:
                prime = False
                break
        return prime
    #======================End=================================
def goldbach_conjecture(num):
    """ 哥德巴赫猜想, 接收一个不小于4的正整数为参数。
    当参数为不小于4的偶数时,将其分解为两个素数的加和,按小数+数的格式输出。
    有多种组合时全部输出,但不输出重复的组合,例如输出8=3+5,不输出8=5+3。
    参数为奇数或小于4时,输出'Data error!'
    """
    #====================Begin===================================
    prime = []  #用来存储素数
    for item in range(2,num+1):
        if is_prime(item):
            prime.append(item)
    if num % 2 == 1 or num < 4:
        print('Data error!')
    elif num % 2 == 0:
        for i in prime:
            for j in prime:
                if i + j == num and i <= j:
                    print(f'{num}={i}+{j}')
    #======================End=================================

if __name__ == '__main__':
    positive_even = int(input())        # 输入一个正数
    goldbach_conjecture(positive_even)