欢迎光临散文网 会员登陆 & 注册

Python编程算法【三十八】哥德巴赫猜想

2023-03-28 16:12 作者:SPC编程爱好者  | 我要投稿

【案例内容】

2000以内的不小于4的正偶数都能够分解为两个素数之和(即验证歌德巴赫猜想对2000以内的正偶数成立)。输出正偶数能被分解成的素数a和b。如果不止一组解,则输出其中a最小的那组解。


【解题思路】

本题的解题思路是:先找出某个正偶数内的所有素数,然后在这些素数中,查找是否存在两个素数相加,会等于原的来这个正偶数。
为了将问题细化,我们可以定义三个函数。第一个函数用来判断一个数是否为素数;第二个函数用来找出某个数内的所有素数,并将它们存入一个列表中;第三个函数用来遍历循环该列表,看看该列表中,是否存在某两个素数相加会等于原来的数。最后,根据题意,用for循环,
验证从4开始,到2000的正偶数,是否都能分解为两个素数之和。如果每个正偶数都能找到两个素数相加之和等于它,就验证歌德巴赫猜想对2000以内的正偶数成立。


【Python代码】

利用3个函数,分别处理相关业务逻辑
列举4-30以内的正偶数,都能分解成两个素数之和

由于2000数字较大,这里就列举30以内的正偶数,经程序运行,都能分解成两个素数之和。实际上,从4-2000的正偶数,都能分解成两个素数之和,而且有的正偶数还不止一组解,根据题意,只要找出第一个素数最小的解即可,所以在计算两素数相加的函数里,从最小的素数开始找,只要找到另一个素数与之相加,能等于原来的正偶数,就可以直接return返回。

Python编程算法【三十八】哥德巴赫猜想的评论 (共 条)

分享到微博请遵守国家法律