用python验证猜想之类的例子_python练手好例子:验证哥德巴赫猜想

哥德巴赫猜想是一个谜,但十分适合用来作为编程练习

涉及的几个问题:

1、如何验证一个数是素数 def prime(n)

一个整数n不能被2 到 n \sqrt{n}n​整除,则为素数

2、产生N以内的素数列表

本文中N取100,可以取更大

3、对于大于6的偶数,从素数表中取得素数和的计算

import math

def prime(n):

retBool = True

# print("n=",n,int(math.sqrt(n)))

for num in range(2, int(math.sqrt(n))+1):

# print("\nnum=",n,num,n%num)

if n % num == 0:

retBool = False

break

else:

retBool = True

return retBool

if __name__ == '__main__':

su = []

for i in range(3, 100): # 100可改成100000或更大,自然需要时间更长

if i % 2 != 0 or i==2:

if prime(i):

su.append(i)

# print(su)

num = len(su)

p = 6

# with open("test.txt","w") as f:

f = open("test.txt","w")

f.write(str(p)+"=")

while(p

for k in range(1,num):

if p

break

else:

p1=su[k-1]

p2=p-p1

if(p2 in su):

print("p=",p,p1,p2)

f.write(str(p1)+"+"+str(p2)+"; ")

p=p+2

f.write("\n"+str(p)+"=")

f.close()

计算结果如下:

6=3+3;

8=3+5;

10=3+7; 5+5;

12=5+7;

14=3+11; 7+7;

16=3+13; 5+11;

18=5+13; 7+11;

20=3+17; 7+13;

22=3+19; 5+17; 11+11;

24=5+19; 7+17; 11+13;

26=3+23; 7+19; 13+13;

28=5+23; 11+17;

30=7+23; 11+19; 13+17;

32=3+29; 13+19;

34=3+31; 5+29; 11+23; 17+17;

36=5+31; 7+29; 13+23; 17+19;

38=7+31; 19+19;

40=3+37; 11+29; 17+23;

42=5+37; 11+31; 13+29; 19+23;

44=3+41; 7+37; 13+31;

46=3+43; 5+41; 17+29; 23+23;

48=5+43; 7+41; 11+37; 17+31; 19+29;

50=3+47; 7+43; 13+37; 19+31;

52=5+47; 11+41; 23+29;

54=7+47; 11+43; 13+41; 17+37; 23+31;

56=3+53; 13+43; 19+37;

58=5+53; 11+47; 17+41; 29+29;

60=7+53; 13+47; 17+43; 19+41; 23+37; 29+31;

62=3+59; 19+43; 31+31;

64=3+61; 5+59; 11+53; 17+47; 23+41;

66=5+61; 7+59; 13+53; 19+47; 23+43; 29+37;

68=7+61; 31+37;

70=3+67; 11+59; 17+53; 23+47; 29+41;

72=5+67; 11+61; 13+59; 19+53; 29+43; 31+41;

74=3+71; 7+67; 13+61; 31+43; 37+37;

76=3+73; 5+71; 17+59; 23+53; 29+47;

78=5+73; 7+71; 11+67; 17+61; 19+59; 31+47; 37+41;

80=7+73; 13+67; 19+61; 37+43;

82=3+79; 11+71; 23+59; 29+53; 41+41;

84=5+79; 11+73; 13+71; 17+67; 23+61; 31+53; 37+47; 41+43;

86=3+83; 7+79; 13+73; 19+67; 43+43;

88=5+83; 17+71; 29+59; 41+47;

90=7+83; 11+79; 17+73; 19+71; 23+67; 29+61; 31+59; 37+53; 43+47;

92=3+89; 13+79; 19+73; 31+61;

94=5+89; 11+83; 23+71; 41+53; 47+47;

96=7+89; 13+83; 17+79; 23+73; 29+67; 37+59; 43+53;

98=19+79; 31+67; 37+61;

100=3+97; 11+89; 17+83; 29+71; 41+59; 47+53;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值