难题篇—验证哥德巴赫的猜想

本文介绍了一个Python程序,用于验证哥德巴赫猜想:所有大于等于6的偶数均可表示为两个素数之和。程序首先生成6至100间的偶数列表和1至100间的素数列表,然后通过双层循环遍历,找出每个偶数对应的素数对。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

1. 编写一个函数验证哥德巴赫的猜想:任何一个充分大的偶数(大于等于6)总可以表示成两个素数之和

要求:将6-100之间的偶数,都用两个素数之和去表示

第一步:生成6-100的偶数的列表
def get_oddlist(start=6, end=100):  # 生成6-100的偶数的列表
    ret = []
    for i in range(start, end + 1):
        if i % 2 == 0:
            ret.append(i)
    return ret
print(get_oddlist())
第二步:生成1-100的素数的列表
def get_prime(n):  #  prime 在python中是素数的意思   这里是定义一个函数,获取素数列表
    ret = []
    if n < 1:
        pass
    else:
        ret.append(2)
        for i in range(3, n):
            isPrime = True     # isPrime是求素数的函数  首先,假设遍历的i是素数
            for j in range(2, i):  # 素数除了1和它本身,是不能被任何其他数整除的,遍历2到i之间的任何数j
                if i % j == 0:    # 如果i 能整除 j 则,i不是 素数
                    isPrime = False
                    break       # 跳出这个循环
            if isPrime:   # 反之,i是素数
                ret.append(i)   #  把i 添加到列表中
    return ret  #  返回结果
print(get_prime(100))     # 把100传参给n,即 n = 100
最后:遍历偶数列表,每遍历一出一个偶数,就使用双层嵌套for循环遍历1-100的素数列表
def main(n):
    odd_list = get_oddlist(end=n)  # 生成6-100的偶数列表
    prime_list = get_prime(n)      # 生成1-100的素数列表
    right_or_not = True
    for odd in odd_list:  # 遍历每一个偶数
        isTrue = False  # 判断每一个偶数 是否有符和条件的(两个素数相加) 假设 该偶数没有这种条件
        for prime1 in prime_list:   # 在素数列表  遍历出 第一个素数
            if isTrue:     # 如果 isTrue = True ,跳出 素数的for循环 即一个偶数只可能就一种结果,得到该结果跳出,遍历另一个偶数的
                break     # 跳出后,跳转到 if not isTrue:
            for prime2 in prime_list:  # 在素数列表  遍历出 第二个素数
                if odd == (prime1 + prime2):  # 如果 遍历出的 偶数 = 第一素数 + 第二个素数
                    print("偶数%d=%d+%d符合" % (odd, prime1, prime2))  # 打印结果
                    isTrue = True  # 一旦找到一个符合条件的,就立即退出当前循环
                    break
        if not isTrue:  # 如果该数 不符合条件,那么直接退出,证明猜想错误  ,之后重新遍历偶数
            print("%d无法用两个素数之和表达" % odd)
            right_or_not = False
            break
    if right_or_not:
        print("猜想成立")
    else:
        print("猜想错误")


main(100)  # 传参  n=100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柒柒钏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值