用python验证猜想之类的例子,Goldbach猜想在Python中的验证

我刚刚为你的函数odd_primes(N)创建了一个替换,以返回所有小于或等于N的素数的列表(其中有2个似乎没有什么区别)。您的check()函数似乎检查4到N之间的所有整数,如果找到没有找到Goldbach和的值,则返回False。然而,正如其他人指出的,一旦找到一对,它也会立即返回True。所以,当你运行check()时,会发生的情况是从数字4开始,发现它的Goldbach对是(2,2),然后立即通过返回True退出函数,忽略4和N之间的任何其他值

当我将return True替换为print语句并在整个循环之后添加一个`return True:def check(N):

for n in range(4, N+1):

if n % 2 ==0:

g = goldbach(n)

if g == (0,0):

print("No sum found for %d !" % n)

return False

else:

print("%d is equal to %d + %d" % (n, g[0], g[1]))

return True

然后运行check(20)例如,我得到:

^{pr2}$

顺便说一句,如果你只想知道一个给定的偶数是否可以写成两个素数的和,但是你不在乎实际的一对素数是什么,你可以这样做:def goldbach(N):

if N % 2 == 0:

primes = odd_primes(N)

# Generate a list of all the i+j sums where j >= i (skipping

# most duplicates this way), and see if N is among the sums.

sums = [i + j for i in primes for j in primes[primes.index(i):]]

return(N in sums)

else:

print("N must be even.")

return(False)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值