【每周一坑】验证哥德巴赫猜想

简介: 尽管对于大多数人来说,无法看懂哥德巴赫猜想及相关问题的证明。不过我们借助计算机,可以快速地判断一个数是否符合哥德巴赫猜想。(只需在判断质数的代码基础上加上两三行。)

哥德巴赫在 1742 年给欧拉的信中提出了以下猜想:任一大于 2 的整数都可写成三个质数之和。(因现今数学界已经不使用“1 也是质数”这个约定,原初猜想的现代陈述为:任一大于 5 的整数都可写成三个质数之和。)欧拉在回信中也提出另一等价版本,即任一大于 2 的偶数都可写成两个质数之和。今日常见的猜想陈述为欧拉的版本。


尽管对于大多数人来说,无法看懂哥德巴赫猜想及相关问题的证明。不过我们借助计算机,可以快速地判断一个数是否符合哥德巴赫猜想。(只需在判断质数的代码基础上加上两三行。)


所以本周的问题就是:


实现一段代码,输入一个大于 2 的偶数 k,输出两个质数 m、n,满足 m + n == k


示例:


>>> Goldbach(123456)
7 123449
>>> Goldbach(12345678)
31 12345647


期待各位同学提交解答。


提交代码可以使用 paste.ubuntu.com 或 codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。


往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。




【杨辉三角形】解答


针对上一期的杨辉三角形题目,我们首先来看如何生成杨辉三角列表,然后解决如何从杨辉三角列表中取值。


生成一个 M 行的杨辉三角列表


def yanghui(n):
    lst = []
    for row in range(n):
        if row < 2:
            n_row = [1 for i in range(row+1)]
        else:
            last_row = lst[-1]
            n_row = [last_row[i]+last_row[i+1] for i in range(len(last_row)-1)]
            n_row = [1] + n_row + [1]
        lst.append(n_row)
    return lst
yh = yanghui(5)
for i in yh:
    print('{:^15}'.format(str(i)[1:-1]))


结果:


1
     1, 1
    1, 2, 1
  1, 3, 3, 1
 1, 4, 6, 4, 1


既然已经得到了杨辉三角列表的生成方法,获取其第 M 行左起第 N 个数就十分容易了。


def yanghui_2(n,k):
    lst = yanghui(n)[-1]
    return lst[k]
print(yanghui_2(5,3))


输出:4


上周 @FisherC、@严迪、@疯琴、@Kunz、@王任、@右边先森、@lisp 等同学提交了代码,其中 @Kunz、@王任 完成了附加题。如果还不能写出的同学可以从上一期的留言中寻找他们的代码参考。




『码上行动』在线学习班正在开放中,详情回复 码上行动


近期文章推荐阅读:

喏,你们要的 PyCharm 快速上手指南

给伸手党的福利:Python 新手引导

只学2个月编程能写出什么代码?他们表示:You can you code!

如何用100行Python代码做出魔性声控游戏“八分音符酱”

数据分析:当赵雷唱民谣时他唱些什么?

一行代码扫出“敬业福”

我扒了杜蕾斯的微博

Python 爬虫爬取美剧网站

今天,你抢到票了吗?

爆款游戏《贪吃蛇大作战》的 Python 实现

相关文章
|
4月前
|
存储 数据挖掘 数据安全/隐私保护
11.Java方法的综合练习题大全-双色球彩票系统,数字的加密和解密等试题(上)
11.Java方法的综合练习题大全-双色球彩票系统,数字的加密和解密等试题
78 1
|
4月前
|
存储 算法 Java
11.Java方法的综合练习题大全-双色球彩票系统,数字的加密和解密等试题(下)
11.Java方法的综合练习题大全-双色球彩票系统,数字的加密和解密等试题(上)
83 1
|
4月前
|
算法
算法编程(六):验证回文串
算法编程(六):验证回文串
26 0
|
9月前
|
数据安全/隐私保护 Python
【每周一坑】信息加密​ +【解答】正整数分解质因数
如果之前已经有质因数,最后剩下的 i 就是最后一个质因数;如果没有,说明原数就是质数
|
5月前
验证“哥德巴赫猜想”
验证“哥德巴赫猜想”
22 0
|
11月前
|
C语言
【C语言每日一题】验证尼科彻斯定理
✨✨ 题目:验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。 例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。 注意:本题含有多组输入数据。 数据范围:1≤m≤100 链接: 题目链接
蓝桥杯2019年第十届JavaB组真题题目+解析+代码+答案:4.数的分解
蓝桥杯2019年第十届JavaB组真题题目+解析+代码+答案:4.数的分解
99 0
蓝桥杯2019年第十届JavaB组真题题目+解析+代码+答案:4.数的分解
|
测试技术
蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:6.分类计数
蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:6.分类计数
64 0
蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:6.分类计数
|
安全
蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:3.合并检测
蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:3.合并检测
142 0
|
人工智能
PAT乙级1007.素数对猜想(20分)
PAT乙级1007.素数对猜想(20分)
73 0

热门文章

最新文章