#使用python3中的函数实现哥德巴赫猜想

使用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]

猜你喜欢

转载自blog.csdn.net/weixin_43773591/article/details/86348935