Python入門習題----歌德巴赫猜想
阿新 • • 發佈:2019-01-06
【問題描述】
證明在偶數n以內,歌德巴赫猜想是成立的。歌德巴赫猜想是:任何一個充分大的偶數都可以表示為兩個素數之和。例如,4=2+2 6=3+3 8=3+5 50=3+47。
【輸入形式】
輸入偶數n
【輸出形式】
對每一個偶數4, 6, 8, ..., n,依次輸出一行。該行內容是<偶數>=<素數1>+<素數2>,要求素數1<=素數2.
【樣例輸入】
6
【樣例輸出】
4=2+2
6=3+3
參考程式碼:
""" Created on Mon Oct 31 10:38:44 2018 @author: Dina """ import math n = int(input()) # 判斷是否是素數 def Isprime(n): # 1 不是素數 if n == 1: return False # 2 是素數 elif n == 2: return True else: # 補充:假如 a 是合數,必然存在非1的兩個約數p1和p2,其中p1<=sqrt(a),p2>=sqrt(a), # 所以只要檢視在 區間 [2 , sqrt(a)] 內的整數是否有約數就可以,若是有約數,則此數就不是素數 for i in range(2,int(math.sqrt(n)+1)): if n % i == 0: return False return True # 每一個偶數 4, 6, 8, ..., n, for i in range(4,n+1,2): for z in range(2,n+1) : # 判斷 z 是否是素數 if Isprime(z): temp = i - z # 判斷 temp 是否也是素數,若是的話,則可以列印結果 if Isprime(temp): print('%s=%s+%s'%(i, min(temp,z), max(temp,z))) break
提交可通過: