质数与哥德巴赫猜想
#求一个数以内的所有质数
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时,说明偶数列表当中的所有元素都符合猜想