使用python3中的函数实现哥德巴赫猜想
编写两个函数:isPrime(x)和Goldbach(N),前者判断整数x是否为素数,后者通过调用前者将整数N分解成两个素数之和。
Step1:判断整数x是否为素数
def isPrime(x):
if x==1:
return True
else:
for i in range(2,x):
if x%i==0:
return False
else: # for-else中else后面的语句块在穷尽列表后被执行,但循环被break终止时不执行。
return True
或者这样:
def isPrime(x):
if x==1 or x==2:
return True
else:
for i in range(2,x):
if x%i==0:
break
if i==x-1:
return True
else:
return False
Step2:调用isPrime将整数N分解成两个素数之和。
def Goldbach1(N):
for x in range (1,N):
for y in range(1,N):
if isPrime(x)==True and \
isPrime(y)==True and \
x+y==N:
print(x,y)
continue
或者这样:(不过下列代码输出的是列表形式)
def Goldbach2(N):
h=[]
for z in range(1,int(N/2+1)):
for y in range(int(N/2),N):
if z+y==N:
h.append([z,y])
for i in range(0,len(h)):
if isPrime(h[i][1])==True and isPrime(h[i][0])==True:
print(h[i])
调用函数
Goldbach1(82)
print('----------')
Goldbach2(82)
输出结果如下:
3 79
11 71
23 59
29 53
41 41
53 29
59 23
71 11
79 3
----------
[3, 79]
[11, 71]
[23, 59]
[29, 53]
[41, 41]