1. 程式人生 > >Python入門習題----歌德巴赫猜想

Python入門習題----歌德巴赫猜想

【問題描述】

證明在偶數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

提交可通過: