哥德巴赫 1742 年給歐拉的信中哥德巴赫提出瞭如下猜測:任一大於 2 的偶數均可寫成兩個質數之和。可是哥德巴赫本身沒法證實它,因而就寫信請教赫赫有名的大數學家歐拉幫忙證實,可是一直到死,歐拉也沒法證實。因現今數學界已經不使用「1 也是質數」這個約定,原初猜測的現代陳述爲:任一大於 5 的偶數均可寫成兩個質數之和。git
功能拆解成幾個小程序:編程
1 def isEven( num ): 2 #判斷是不是偶數 3 if num % 2 == 0: 4 return True 5 else: 6 return False 7 8 def isPrime( num ): 9 #判斷是不是質數 10 from math import sqrt 11 if num == 0 or num == 1: 12 flag = False 13 elif num == 2: 14 flag = True 15 16 else: 17 for i in range(2, num): 18 if num % i == 0: 19 flag = False 20 break 21 else: 22 flag = True 23 return flag 24 25 def isNum( string ): 26 #判斷是不是數值 27 if string.isdigit(): 28 return True 29 else: 30 return False
核心的功能已經完成函數化後,組合這些函數完成編程的目標:輸入任意一個大於5的偶數,證實這個偶數符合哥德巴赫猜測,並顯示是哪兩個質數。小程序
1 respone = input('請輸入一個大於5的偶數:') 2 if isNum(respone): #判斷輸入是否爲整數 3 respone = int(respone) #判斷是不是大於5的偶數 4 if (respone > 5) and isEven(respone): 5 #進行猜測判斷 6 i_list = [] 7 for i in range(1,respone): 8 j = respone - i #分解爲兩個數字 9 if isPrime(i) and isPrime(j): 10 i_list.append(i) #記錄已顯示的數字 11 if j in i_list: 12 pass 13 else: 14 print( '{0} = {1} + {2}'.format(respone, i, j)) 15 else: 16 print('輸入錯誤!') 17 else: 18 print('輸入錯誤!')
顯示結果:app