100个python算法超详细讲解:哥德巴赫猜想

您所在的位置:网站首页 用函数证明哥德巴赫猜想 100个python算法超详细讲解:哥德巴赫猜想

100个python算法超详细讲解:哥德巴赫猜想

2024-07-15 18:09| 来源: 网络整理| 查看: 265

1.问题描述 2000以内的不小于4的正偶数都能够分解为两个素数之和(即验证歌德巴赫猜想对2000以 内的正偶数成立)。 2.问题分析 根据问题描述,为了验证歌德巴赫猜想对2000以内的正偶数都是成立的,要将整数分解 为两部分,然后判断分解出的两个整数是否均为素数。若是,则满足题意,否则应重新进行 分解和判断。 针对该问题,我们可以给定如下的输入和输出限定。 输入时:每行输入一组数据,即2000以内的正偶数n,一直输入到文件结束符为止。 输出时:输出n能被分解成的素数a和b。如果不止一组解,则输出其中a最小的那组解。 当然,读者可以根据实际的需要规定不同的输入和输出形式。 输入示例:

4 6 8 10 12 输出示例: 2 2 3 3 3 5 3 7 5 7 3.算法设计

本问题我们可以采用函数来解决。 (1)fun(n)函数判断输入的n值是否为素数 定义一个函数,函数名设为fun,在其中判断传进来的形参——设为n(n≥2),是否为素 数,如果是素数则返回1,否则返回0。在判断是否为素数时,可以采用5.1节中介绍的方法。 需要注意的是,在所有偶数中,只有2是唯一的素数。因此,在函数fun()中,可以分为以下4 种情况来判断: ·n=2,是素数,返回1。 ·n是偶数,不是素数,返回0。 ·n是奇数,不是素数,返回0。 ·n≠2,是素数,返回1。 (2)guess(n)函数用于验证哥德巴赫猜想 由于我们已经对输出做了限定,即当输出结果时,如果有多组解,则输出a最小的那组 解。显然,对每个读入的数据n,a必然小于或等于n//2,因此,定义循环变量i,使其从2~n/2 进行循环,每次循环都做如下判断:fun(i) and fun(n-i)是否为1。 如果fun(i) and fun(n-i)=1,则表示fun(i)=1同时fun(n-i)=1。由fun()函数的定义可知,此时i 和n-i都为素数,又由于i是从2~n/2按由小到大的顺序来迭代的,因此,(i,n-i)是我们求出 的一组解,且该组解必然是所有可能解中a值最小的。 还需要注意的是,由于除了2以外的偶数不可能是素数,因此,i值的可能取值只能是2和 所有的奇数。 4.确定程序框架 (1)程序主框架 程序的主框架是一个while循环,每输入一个数据就处理一次,直到人为结束程序或输入 非法数据而终止输入。代码如下:

while True: # 循环输入 n = int(input()) guess(n) # 调用函数验证哥德巴赫猜想

(2)使用函数判断n是否为素数 在算法设计中我们详细介绍了fun()函数,它的功能就是判断传进来的形参n是否为素数, 其代码如下:

# 判断是否为素数 def fun(n): if n == 2: return 1 # n是2,返回1 if n % 2 == 0: return 0 # n是偶数,不是素数,返回0 i = 3 while i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3