哥德巴赫猜想中写到,一个充分大的偶数(大于等于4),它可以分解为两个素数(质数)的和
第一步:先定义一个判断质数的函数
质数:是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
我们可以让他从2开始一直除到自身-1为止,如果可以被整除,那就是非质数
补充:小知识点,因为给一个数开方之后 √m*(√m+1)>m 所以除到它的开方数为止就行了。
Python中n**0.5两个*号表示幂函数,0.5是开方。
def isPrimeNumber(n):
k=int(n**0.5)
for i in range(2,k):
if n%i==0:
return False
return True
验证:选出100以内的质数
for i in range(100):
if isPrimeNumber(i):
print(i)
结果:
0
1
2
3
4
5
6
7
8
9
11
13
15
17
19
23
25
29
31
35
37
41
43
47
49
53
59
61
67
71
73
79
83
89
97
第二步:偶数拆开成两个奇数。
这里不除以2,会造成j和k首尾对应的情况。
def guess(n):
if n%2 != 0:
print("不是偶数")
Return
for i in range(int(n/2)):
j=i
k=n-j
第三步:判断两个数同时是质数,并记录
def guess(n):
if n%2 != 0:
print("不是偶数")
return
for i in range(int(n/2)):
j=2*i+1
k=n-j
if (isPrimeNumber(j) and isPrimeNumber(k)):
print('%d+%d=%d'%(j,k,n))
第四步:验证100有多少种加法
guess(100)
结果:
3+97=100
11+89=100
17+83=100
29+71=100
41+59=100
47+53=100