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

哥德巴赫猜想:大于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实现哥德巴赫猜想内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

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

    哥德巴赫猜想:大于8的偶数之和都可以被两个素数相加 范围 8 - 10000 思路: 首先不要去管需要什么什么东西实现,所以我们如果知道如何去完成: 大于8的偶数之和都可以被两个素数相加: # 可以假设 这个猜想是正确的. # 设一个变量是true flag = True # 确定范围 8 - 10000 for fanwei in range(8,10000,2): # 如果猜想错误如何? if not caixiang(fanwei): flag = False # 正确又如何错误又如何?

  • Python中eval带来的潜在风险代码分析

    0x00 前言 eval是Python用于执行python表达式的一个内置函数,使用eval,可以很方便的将字符串动态执行.比如下列代码: >>> eval("1+2") >>> eval("[x for x in range(10)]") [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 当内存中的内置模块含有os的话,eval同样可以做到命令执行: >>> import os >>&g

  • python中delattr删除对象方法的代码分析

    最近我们针对对象属性这块,介绍了不少关于测试属性的方法.在进行一系列测试后,我们发现这个属性并不需要,这时候就要用到删除的功能.在python中可以选择delattr函数删除对象的属性,基于它的删除功能,是否能扩展到删除的对象的方法上,在我们对delattr函数进行全面了解后,展开实例的测试. 1.说明 函数作用用来删除指定对象的指定名称的属性,和setattr函数作用相反. 不能删除对象的方法. 2.参数 object -- 对象. name -- 必须是对象的属性. 3.返回值 无. 4.实

  • Python从函数参数类型引出元组实例分析

    本文实例讲述了Python从函数参数类型引出元组.分享给大家供大家参考,具体如下: 自定义函数:特殊参数 def show(name="jack", *info): print(name) #jack print(info) #(22, '男') show("jack",22,"男") 可以看出22,"男"全部归为了函数的第二个参数*info. 我们可以看到打印这个info参数结果是:小括号包起来的形式. 函数的特殊参数升级

  • Python 文件操作技巧(File operation) 实例代码分析

    常用的module是 os ,os.path 和shutil,所以要先引入他们. python遍历文件夹和文件 这个也许是最常用的功能,如下: 复制代码 代码如下: import os  import os.path rootdir = "D:\\programmer\\training"  for parent, dirnames, filenames in os.walk(rootdir):      #case 1:      for dirname in dirnames: 

  • python获取当前运行函数名称的方法实例代码

    python获取当前运行函数名称的方法实例代码 摘要: c/c++中获取函数所在源码名,函数名和行号的方法很简单 __FILE__,__FUNCTION__和__LINE__ python没有这种语法,但也可以通过某种方法得到,这里给出例子,使用异常信息得到[可能会损失性能] 直接贴代码[可参考python核心编程4.4] #获取调用该函数所在(被调用)的函数名 #author:peterguo@vip.qq.com def get_func_name(): import sys try: ra

  • Python字典,函数,全局变量代码解析

    字典 dict1 = {'name':'han','age':18,'class':'first'} print(dict1.keys()) #打印所有的key值 print(dict1.values()) #打印所有的values值 print("dict1['name']:",dict1['name']) #打印name相对应的value值 print(dict1.get('name')) #通过字典的get方法得到name相对应的value值 dict1['age']=28 #字

  • Python自定义函数定义,参数,调用代码解析

    函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print()等.也可以创建用户自定义函数. 函数定义 函数定义的简单规则: 函数代码块以def关键词开头,后接函数标识符名称和圆括号(),任何传入参数和自变量必须放在圆括号中间 函数内容以冒号起始,并且缩进 若有返回值,Return[expression]结束函数:不带return表达式相当于返回None 函数通常使用三个单引号'''...'''来注释说明函数:函数体内容不可为空,可用pass来表示空语句:以下几个

  • Python随机数函数代码实例解析

    这篇文章主要介绍了Python随机数函数代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 ''' choice(seq) 从序列的元素中随机选出一个元素 randrange ([start,] stop [,step]) 从指定范围内,在指定步长递增的集合中 获取一个随机数,步长默认为 1 .注:不包含 stop 值 random() 随机生成下一个实数,它在[0,1)范围内. shuffle(lst) 将序列的所有元素随机排序,返回

  • python绘图subplots函数使用模板的示例代码

    背景 使用python进行图像可视化,很多情况下都需要subplots将多幅图像绘制在一个figure中.因为使用频率足够高,那么程序员就需要将其"封装",方便复用,所以,这里将笔者常用的subplots用法记录之. 如果有python绘图使用subplots出现标题重叠的解决方法 的问题,可以参考之. 模板 显示中文 plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文 使用subplot(221) 对应的subplots代码: fr

随机推荐