Python练习(14)-哥德巴赫猜想-中

问题描述

众所周知,哥德巴赫猜想的证明是一个世界性的数学难题,至今未能完全解决。我国著名数学家陈景润为哥德巴赫猜想的证明作出过杰出的贡献。 所谓哥德巴赫猜想是说任何一个大于2的偶数都能表示成为两个素数之和。
编写程序,验证指定范围内哥德巴赫猜想的正确性,也就是近似证明哥德巴赫猜想。

分析:
构造素数判断函数;
在范围内50 遍历,找到偶数n;(奇数也要执行一次,算法复杂度较大,改用 i+=2 来直接找到偶数)
再用一个循环,i 遍历3到 n/2,判断i 和 n-i 是否是素数,是则输出

代码

import math
def isPrimeNumber(num):
    i = 2
    x = math.sqrt(num)
    while i < x:
        if num%i == 0:
            return False
        i += 1
    return True
n=6
while n < 51:
        for j in range(3,int(n/2)):
            if isPrimeNumber(j) and isPrimeNumber(n-j):
                print '%s = %s + %s' % (n, j, n-j)
                #break   # 找到符合的组合后,便结束内循环
    n+=2

在这里插入图片描述
这里发现,有的偶数可以找出多种组合,所以会重复输出,只需要一组便得以证明,所以可以在print 后加上break(结束内循环)

知识积累
print ‘%s’ % 3, ‘%’
3 %

哥德巴赫猜想是一个未解决的问题,它猜测每个大于2的偶数都可以表示为两个素数之和。虽然到目前为止这个猜想尚未得到数学上严格的证明,但它已经被数值验证对无数大数都是正确的。然而,编写一个直接证明哥德巴赫猜想的算法通常是不可能的,因为这超出了当前计算机的能力范围。 在Python中,由于其简洁性和可读性,我们通常不会尝试编写能自动证明哥德巴赫猜想的程序,而是在编程练习中模拟它的测试。比如我们可以创建一个函数检查某个特定数是否可以分解为两个素数,但这并不是实际的证明。 下面是一个简单的示例,展示如何在一个范围内检查数是否满足哥德巴赫猜想: ```python def is_prime(n): if n <= 1: return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True def check_goldbach_conjecture(num): if num < 4: # 小于4的数不需要考虑 return False else: primes = [] for i in range(2, num): # 搜索所有小于num的素数 if is_prime(i): if (num - i) >= 2 and is_prime(num - i): # 如果能找到两个素数相加等于num,则返回True primes.append((i, num - i)) break # 找到一对素数就停止搜索 return len(primes) > 0 # 测试几个数字 print(check_goldbach_conjecture(6)) # 输出:True print(check_goldbach_conjecture(10)) # 输出:True ``` 请注意,这只是为了演示目的,并非真正意义上的证明。对于大的数,这个方法可能会非常慢,而且随着n的增长,找到这样的解变得越来越困难。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值