质数与哥德巴赫猜想

质数与哥德巴赫猜想

#求一个数以内的所有质数
import time , math
num = int(input(‘请输入数字:’))
aa = time.time()
list2 = [2] #初始质数数列
for a in range(3,num+1) :
for b in range(2,int(math.sqrt(a)+1)) : #for b in list2 : 这一行代码也可以这样写,但是似乎在数不大的情况下比原来运行速度慢
if a % b == 0 :
break
else :
list2.append(a)
#print(list2)
#print(len(list2))
bb = time.time()
print(‘耗时%s秒’%(bb-aa))
#哥德巴赫猜想
#求一个偶数符合哥德巴赫猜想的所有质数组合 isprime 这个是专门用来判断一个数是否是质数的,这里先不用
list1 = []
for b in list2 :
c = num - b
if c in list2 :
list1.append([b,c])
if c > b : #这一步是列表去重,[3,7] 和 [7,3] 不相等,不能直接用 set(list1) ,但是在统计组合是这两个是相等的
list1.remove([b,c])
print(list1)
#验证一个数以内的所有偶数是否符合哥德巴赫猜想猜想
list3 = []
for a in range(4,num+1,2) :
list3.append(a) #生成一个数之下的偶数数列
b = 2
while b < num : # 这里不能直接用list3[-1] ,因为最后会出现list3是一个空列表
b = b +2
for c in list2 : #这里list2直接沿用之前的质数数列
d = b - c #如果一个偶数减去一个质数之后这个数仍然是质数猜想就成立
if d in list2 :
list3.remove(b)
break
print(len(list3)) #当出现结果为0时,说明偶数列表当中的所有元素都符合猜想

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值