原题解答
本次的题目如下所示:
哥德巴赫猜想的内容如下:任何大于2的偶数,都可以表示成两个素数的和。
为了验证哥德巴赫猜想的正确性,请编写一个程序,输入一个大于2的偶数,输出两个素数的和。
输入:
一个大于2的偶数
输出:
两个素数 (两个数的和为输入的数)
输入样例:
10
输出样例:
3 7
这是一个经典的数学问题,我们首先要解决的问题是:如何判断一个数是素数。之前我们曾经讲过使用Python判断素数,我们可以把判断一个数是否为素数写成函数。
from math import sqrt
def is_prime(n):
flag = True
for i in range(2, int(sqrt(n)) + 1):
if n % i == 0:
flag = False
break
return flag
下面我们要看遍历到范围,由于1不是素数,我们从2开始遍历,遍历到结束值是多少呢?两个数相加的结果为这个数,那一个数较小,另一个数较大,最中间的情况为两个数相等,因此我们只需要遍历到n//2 + 1。当找到一个较小的数是质数,并且较大的数也为质数,则可以满足条件了。
因此,我们可以将代码写成如下: