以下为哥德巴赫猜想完整代码:

def is_prime(num):cnt=0for i in range(2,num):if num%i==0:cnt+=1[1,num].append(i)if cnt==0:return numdef goldbach(num5):#goldbach conjecture:for {n∈N+|n∈(5,∞)},always have n=x+y+z(x,y,z are prime)lst2=[]lst=[is_prime(i) for i in range(2,num5) if is_prime(i)!=None]for k in range(len(lst)):conum=num5-lst[k]for n in range(len(lst)):if lst2!=[]:break
#一旦有一种三素数的组合方式就结束循环,因为可能这个数num5有多种素数组合的方式,我们只要一种就够了for m in range(len(lst)):if conum==lst[n]+lst[m]:lst2=[lst[n],lst[m],lst[k]]return lst2lst3=[i for i in range(6,10)]#哥德巴赫证明范围
print({lst3[i]:list(map(goldbach,lst3))[i] for i in range(len(lst3))})#运行结果:{6:[2,2,2],7:[2,3,2],8:[3,3,2],9:[2,5,2]}

整个代码分三部分,第一部分判断素数的子程序,第二部分是哥德巴赫猜想在指定区间的实现的子程序,最后是主程序。

其中goldbach()中有一个简单的思想方法,就是简化思想-把由三个素数组成的加和通过循环分解成两个(if conum== lst[n]+lst[m]),这样判断就更加的容易了

另外,goldbach()子程序的第二行使用到了列表生成式,目的就是让代码更加简洁,其实他的真面目是:

lst=[]
for i in range(2,num5):if is_prime(i)!=None:lst.append(is_prime(i))

回到的哥德巴赫猜想实现程序,我在goldbach()中使用了三层for循环。虽然很费系统资源,但由于有人已经使用while循环证明了该猜想,我再用一次while就显得没必要。

最后一行打印字典生成式中使用到了map方法,即将goldbach()这个一次只能返回一个数的素数组合的子程序多次运行,直到lst3列表中所有元素都经过该子程序,并返回一个对象。举个例子吧:

def a(num):return num*2
lst=[1,2,3,4]
print(list(map(a,lst)))
#运行效果:
#打印列表:[2,4,6,8]

最后别忘了map返回的不是列表,所以如果想让他以列表呈现出来还要多加一步:list(...)

注:列表生成式有很多鬼畜的玩法,各式各样的。对于初学的朋友别忘了去学一下列表生成式,以后对写,简化,格式化代码很有帮助!


 附:角谷定理给定区间内证明其正确性python

# 角谷定理证明
def func(x):if x % 2 != 0:return x*3+1else:return round(x/2)result3 = map(func, [i for i in range(2, 20)])  # 将func函数功能应用到lst中
for j in range(17):  # 迭代最少次数result3 = map(func, list(result3))
lst_Kakutani = list(result3)print(lst_Kakutani)
for m in lst_Kakutani:if m != 1 and m != 4 and m != 2:print("迭代次数不够多或猜想不成立")break#运行结果:[2,2,4,4,4,2,1,2,1,4,1,1,4,4,2,1,4,4]

角谷定理提出:给定任意自然数,若是偶数就除以二,若是奇数就乘三加一,一直这么迭代下去,最后该自然数会在1->2->4->1....这几个数中循环,也就是说如果该程序运行结果中显示的列表里面的数不是1,2就是4。若出现了其他数,一般说明可能迭代次数不够,第二可能就是定理错了。当然在该程序中,如果出现其他数,终端序会显示:“迭代次数不够多或猜想不成立”。所以就不用费力地观察了

该程序如何体现角谷定理的:在这个程序中,func()实现的是一个自然数的一次迭代,我们还需要多个自然数的一次迭代(line8-9),再到多个自然数的多次迭代(line11-12),且迭代次数有穷。

java 版角谷定理证明

package advance;public class Kakutani {private int number;public static int cnt;public void setNumber(int number) {this.number = number;}public int iter1(int r) {if (r % 2 == 0) {return r / 2;} else {return r * 3 + 1;}}public int iter_n() {int result = this.iter1(this.number);//一次迭代的结果while (result != 1 && result != 2 && result != 4) {//有问题的部分:若角谷定理为假,则其是死循环result = this.iter1(result);cnt += 1;}return result;}public static void main(String[] args) {Kakutani num = new Kakutani();int randint = (int) (Math.random() * 100);num.setNumber(randint);// random number range=[0,100)int result = num.iter_n();//迭代完成的结果System.out.println("kakutani_func^" + cnt + "(" + randint + ") = " + result);if (result == 4 || result == 2 || result == 1) {System.out.print("kakutani thereom has been proofed!");} else {System.out.print("kakutani thereom is incorrect!");}}
}

哥德巴赫猜想在指定区间的证明python相关推荐

  1. 德巴赫猜想python_哥德巴赫猜想问题基于Python的验证方法研究

    1.概述 Python语言[1,2]是一门面向对象的解释型高级程序设计语言,其不仅开源,而且支持命令式编程,包含丰富且易理解的标准库和扩展库,可以快速生成程序的原型,帮助开发者高效地完成任务.同时,P ...

  2. 哥德巴赫猜想的证明(李扩继)

    哥德巴赫猜想是一个纯数学命题,是偶数的分类问题.偶数=奇合数+奇合数=奇合数+素数=素数+素数.本来没有问题的事,可在数学领域里,总要把每一个命题是真的还是假的要判断清楚,德国的一个中学数学教师哥德巴 ...

  3. python哥德巴赫猜想证明要求其中一个素数最小_第4-4章“哥德巴赫猜想”的验证(20分),浙大,版,Python,程序设计,题目,集第...

    题目 数学领域著名的"哥德巴赫猜想"的大致意思是:任何一个大于2的偶数总能表示为两个素数之和.比如:24=5+19,其中5和19都是素数.本实验的任务是设计一个程序,验证20亿以内 ...

  4. python判断质数的函数并输出_1024程序员节,说质数与哥德巴赫猜想(下)

    Python数学编程第1讲 2020.10.24 回顾上节练习 据说数学王子高斯小时候,数学老师曾让他们计算1+2+3+4+5+6+--+100的得数,同学们都忙着挨个挨个地相加,只有高斯巧妙发现了快 ...

  5. python哥德巴赫猜想代码_查看“Python-2020-fall”的源代码

    因为以下原因,您没有权限编辑本页: 您所请求的操作仅限于该用户组的用户使用:用户 您可以查看与复制此页面的源代码.== Python程序设计课程主页(2020年秋季学期) == Teacher: [h ...

  6. python刷题:哥德巴赫猜想

    Description 哥德巴赫猜想:对于任一个大于或等于4的偶数n,至少存在一对素数p1和p2,使得n=p1+p2. 这个猜想目前既没有被证明,也没有被否定.没有人确定这个猜想是否成立.但是,如果对 ...

  7. python基础知识验证哥德巴赫猜想

    哥德巴赫猜想: 任何大于2的偶数都能够写成两个质数相加的形式. 验证思路: 编写哥德巴赫分解程序,输入一个数,输出他的两个子质数,如果找不到,返回False.遍历整数,查看是否有False的情况,如果 ...

  8. Python 实现哥德巴赫猜想

    Python实验课上有道编程题是: 哥德巴赫猜想:编写函数,接收一个偶数,输出两个素数,并且两个素数之和等于原来的偶数,如果有多组,则全部输出. 仔细梳理了一下思路: 可以定义两个函数,一个判断是否为 ...

  9. 哥德巴赫猜想python版

    华农大一狗刚学python,只为应付考试罢了 输入一个值,可以得到这个值以下所有的哥德巴赫猜想(你应该懂我意思) 例如输入30 会得到 4=2+2 6=3+3 8=3+5 10=3+7 12=5+7 ...

最新文章

  1. 3月18 周作业题解
  2. Linux链接库二(动态库,静态库,库命名规则,建立个没有版本号的软连接文件)...
  3. C#文件夹操作-Directory类
  4. 2 magicwatch_荣耀Magic Watch 2手表实际体验如何?
  5. html++留言板增加删除,实现留言板删除留言的具体思路跟操作
  6. 生产者消费者实现用c语言用物品1,物品2等来代替,用C语言编写程序:生产者和消费者之间实现同步与互斥问题...
  7. linux局域网聊天软件,自制局域网内聊天与图片传输小软件
  8. Vue - 最新网页 H5 分享到微信朋友圈 / 转发分享给朋友好友 / 分享到手机 QQ / 分享到 QQ 空间,Vue.js Nuxt.js uni-app 通用公众号页面解决方案(超级详细教程)
  9. kaggle TMDB5000电影数据分析和电影推荐模型
  10. pci-e服务器显卡性能,RTX 2080 Ti PCI-E性能测试:3.0 x16终于成为必需
  11. go编译库给c语言map参数,在 Go 中使用 C 语言的动态库
  12. fluent二维叶型仿真_CFX案例 | 混合器流场仿真——热和流动
  13. mysql sql执行效率_一顿操作猛如虎,SQL执行效率提高250
  14. What’s the value created by bitcoin?
  15. GAMS中fx的位置 固定变量数值
  16. java 与 SQL 的邂逅 之二 (简单话)
  17. 阿里终于出手了!“00后职校女生自学 低代码 月薪破万” 背后真相,细思极恐...
  18. 面:常见面试题整理(操作系统)
  19. kvm安装ovmf,增加UEFI启动模式
  20. CANoe C-V2X Demo(V2I+V2V)演示视频

热门文章

  1. Java封装树形结构(任意父节点)
  2. email营销怎么做才有效
  3. 数据结构:竞标赛排序 原理简单
  4. 世上本无事,庸人自扰之。
  5. phpStorm无法更改php语法等级
  6. VIM编辑器配置php语法检测功能
  7. setRequestedOrientationonCreate不得不说的故事
  8. saltstack入门
  9. [附源码]计算机毕业设计葡萄酒销售管理系统论文Springboot程序
  10. Steve:AI创建视频和动画的在线工具