Python 哥德巴赫猜想 初学者小题,代码不知道哪里出现了错误,希望得到指点

文章中展示了一个尝试验证歌德巴赫猜想的Python代码,该代码旨在将偶数表示为两个素数之和。然而,代码存在缺陷,导致输出缺少部分正确组合。问题在于内层循环限制了范围,没有充分搜索所有可能的素数对。需要调整内层循环以确保找到所有可能的解。

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

【问题描述】

证明在偶数n以内,歌德巴赫猜想是成立的。歌德巴赫猜想是:任何一个充分大的偶数都可以表示为两个素数之和。例如,4=2+2   6=3+3   8=3+5  50=3+47。


【输入形式】

输入偶数n
【输出形式】

对每一个偶数4, 6, 8, ..., n,依次输出一行。该行内容是<偶数>=<素数1>+<素数2>,要求素数1<=素数2.
【样例输入】

6
【样例输出】

4=2+2

6=3+3

我的代码如下:

a=int(input())

def zhishu(p):

    if p==2:

        return('1')

    for k in range(2,p):

        if p%k==0:

            return('0')

    return('1')

for x in range(4,a+1,2):

    for i in range(2,6):

        j=x-i

        ii=zhishu(i)

        jj=zhishu(j)

        if ii=='1' and jj=='1' and i+j==x and i<=j:

            print(x,'=',i,'+',j,sep='')

            break

但是输出与期望输出不一样,会缺一些数,比如以下的输出少了38

错误输出:

4=2+2
6=3+3
8=3+5
10=3+7
12=5+7
14=3+11
16=3+13
18=5+13
20=3+17
22=3+19
24=5+19
26=3+23
28=5+23
32=3+29
34=3+31
36=5+31
40=3+37
42=5+37
44=3+41
46=3+43
48=5+43
50=3+47

期望输出:

4=2+2
6=3+3
8=3+5
10=3+7
12=5+7
14=3+11
16=3+13
18=5+13
20=3+17
22=3+19
24=5+19
26=3+23
28=5+23
30=7+23
32=3+29
34=3+31
36=5+31
38=7+31
40=3+37
42=5+37
44=3+41
46=3+43
48=5+43
50=3+47

希望大佬指正,感激不尽

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值