新闻动态

Python用函数思想完成哥德巴赫猜想代码分析

发布日期:2022-03-18 08:55 | 文章来源:脚本之家

哥德巴赫猜想:大于8的偶数之和都可以被两个素数相加

范围 8 - 10000

思路:

首先不要去管需要什么什么东西实现,所以我们如果知道如何去完成:

大于8的偶数之和都可以被两个素数相加:

# 可以假设 这个猜想是正确的。
# 设一个变量是true
flag = True
# 确定范围 8 - 10000
for fanwei in range(8,10000,2):
# 如果猜想错误如何?
 if not caixiang(fanwei):
  flag = False
# 正确又如何错误又如何?
if flag = True:
  print('猜想正确')
else:
 print('猜想错误') 

之后我们去写一个函数 来确定这个猜想是否正确,正确就返回 True

def caixiang(n):
# 这里需要所有的素数 8 - 10000的
# 这里的目的是为了拆分出两素数参数n 和 循环名 m 两个变量
 for m in range(1,n//2+1):
  if sushu(m) and sushu(n-m):
return True
 return False

最后发现还要判断是否是素数:

def sushu(n):
 su = 0
 for i in range(1,n-1):
  c = n%i
  if c == 0:
su += 1
 return True

这样这个哥德巴赫猜想就完成了。

思路扩展:

思路:

可以定义两个函数,一个判断是否为素数,一个分解。利用前面的两个函数生成n范围内的素数列表。如果两层for循环中的两个迭代变量之和等于参数n,就将这两个变量加入列表中,循环完所有的情况后返回列表,并打印输出。

参考代码:

import  math
def isprime(n): #判断素数
 if n == 1:
  return False
 elif n == 2:
  return True
 else:
  for i in range(2,int(math.sqrt(n)+1)):
if n%i == 0:
 return False
  return True
 
def thonsand(n) : #生成若干个素数,返回素数list
 a = []
 for i in range(1,n+1):
  if isprime(i):
a.append(i)
 return a
"""利用前面的两个函数生成n范围内的素数列表
两层for循环,两个迭代变量之和如果等于参数n就加入列表中
循环完所有的情况后返回列表,并打印输出。
"""
def gdbh(n): 
 a =[]
 ls = thonsand(n)
 for i in ls:
  for j in ls:
if n == i+j:
 a.append(i)
 a.append(j)
 return a
 
ls2 = gdbh(12)
ls3 = gdbh(152)
print(ls2)
print(ls3)

两个测试数据 12,152

输出如下;

[5, 7, 7, 5]

[3, 149, 13, 139, 43, 109, 73, 79, 79, 73, 109, 43, 139, 13, 149, 3]

到此这篇关于Python用函数思想完成哥德巴赫猜想代码分析的文章就介绍到这了,更多相关Python实现哥德巴赫猜想内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

美国服务器租用

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部