page contents

python基础编程100例:第37期-哥德巴赫猜想——偶数

本文讲述了python基础编程100例:第37期-哥德巴赫猜想——偶数!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2022-03-5C2aTcI8623535f266d8d.png

本文讲述了python基础编程100例:第37期-哥德巴赫猜想——偶数!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

第37期-哥德巴赫猜想——偶数

1 问题描述

将6-99之间的偶数都表示成两个素数之和,输出时每行输出5组。


1742年,哥德巴赫给欧拉的信中提出了以下猜想:任一大于2的整数都可写成三个质数之和。但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮忙证明,然而一直到死,欧拉也无法证明。

因现今数学界已经不使用“1也是素数”这个约定,哥德巴赫猜想的现代陈述为:任一大于5的整数都可写成两个质数之和。(n>5:当n为偶数,n=2+(n-2),n-2也是偶数,可以分解为两个质数的和;当n为奇数,n=3+(n-3),n-3也是偶数,可以分解为两个质数的和)。欧拉在回信中也提出另一等价版本,即任一大于2的偶数都可写成两个质数之和。把命题"任一充分大的偶数都可以表示成为一个素因子个数不超过a的个数与另一个素因子不超过b的个数之和"记作"a+b"。1966年陈景润证明了"1+2"成立,即"任一充分大的偶数都可以表示成二个素数的和,或是一个素数和一个半素数的和"。

今日常见的猜想陈述为欧拉的版本,即任一大于2的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。

从关于偶数的哥德巴赫猜想,可推出:任何一个大于7的奇数都能被表示成三个奇质数的和。后者称为“弱哥德巴赫猜想”或“关于奇数的哥德巴赫猜想”。若关于偶数的哥德巴赫猜想是对的,则关于奇数的哥德巴赫猜想也会是对的。2013年5月,巴黎高等师范学院研究员哈洛德·贺欧夫各特发表了两篇论文,宣布彻底证明了弱哥德巴赫猜想。


2 解题思路

输出时每行输出5组,可以记录输出次数后换行输出

遍历6-99中的所有数,for循环

判断是否是素数的方法已经出现过很多次了


3 解题方法

a = [2]

for i in range(3, 100):

    b = 0

    for j in range(2, i):

        if i % j != 0:

            b += 1

            if b == i - 2:

                a.append(i)

m = 0

for i in range(6, 99):

    if i % 2 == 0:

        for j in range(2, i):

            if j in a:

                if i - j in a:

                    m += 1

                    if m == 5:

                        print(f'{i}={j}+{i - j}')

                        m = 0

                    else:

                        print(f'{i}={j}+{i - j}', end=' ')

                    break


第1行: 创建列表a用于存放素数

第2行: 使用for循环遍历3-100的整数,由于只需计算99以内的偶数,所以最大值选择了100,用以判断以及存放100以内的所有素数

第3-7行: 计算是否从2到数本身都不是该数的因子,若是,你们该数就是素数

第8行: 将判断结果是素数的数加入到列表a中

第9行: m=0用于记录每行输出的个数

第10行: 遍历6-99中的所有整数

第11行: 判断整数是否是偶数

第12-14行: for循环遍历小于i的整数,判断该数以及该数与i的差是否都在a中(都在列表a中代表他们都是素数)

第15行: 若满足上述条件,则给m值加一用以判断一行输出了几个

第16-18行: 如果m等于5,则正常输出便可(正常输出会自动换行),并将m重新等于0

第19-20行: 如果m不等于5,则输出并以空格为结尾,这样下次输出就会和本次在同一行了

第21行: 输出完毕后结束循环


print()函数

print() 方法用于打印输出,最常见的一个函数。

语法:

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

这里主要介绍end

参数说明:

end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。


代码运行结果为:

attachments-2022-03-2ehVMhG6623535b496575.png

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-pQXq0zCA629095ab7836a.jpeg

  • 发表于 2022-03-19 09:46
  • 阅读 ( 747 )
  • 分类:Python开发

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章