少儿Python每日一题(14):哥德巴赫猜想

原题解答

本次的题目如下所示:

哥德巴赫猜想的内容如下:任何大于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。当找到一个较小的数是质数,并且较大的数也为质数,则可以满足条件了。

因此,我们可以将代码写成如下:


你可能感兴趣的:(少儿Python编程每日一题,python,开发语言,算法,青少年编程)