拆解N的5位質數

乘風破浪的熊爸發表於2020-11-11
# 獲得使用者輸入數字N,計算並輸出從N開始的5個質數,單行輸出,質數間用逗號,分割。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬
# 注意:需要考慮使用者輸入的數字N可能是浮點數,應對輸入取整數;最後一個輸出後不用逗號。
# 幾個功能塊
# 判斷數字是否小於2
# 判斷是否為質數,質數為True
# 判斷是否為整數
# 列印數字,並加上逗號

def prime(N):
    if N < 2:                   # 判斷數字是為小於2,如果為2,則返回錯誤
        return False
    else:
        n = int(pow(N, 0.5) +1) # 求取平方根,減少運算次數。
        for i in range(2,n):    # 判斷是否為質數。
            if N %i ==0:
                return False
        else:                   # 如果for迴圈執行完畢,則返回True。
            return True
num =eval(input())              # 輸入數字
if num != int(num):             # 判斷是否為整數,如果不是,則+1
    num =int(num)+1
else:
    num = int(num)              
count =5
while count >0:
    if prime(num):              # if如果為True,則為質數,執行下面語句
        if count >1:            # 如果為前4個數,則在後面加逗號。
            print(num, end=',')
        else:                   
            print(num)          # 如果是第五個數,則不加逗號。
        count -=1
    num +=1


        
# 第一行`if N ==1:`錯誤,應為'if N < 2:'
# 第26行到第32行,判斷列印資料錯誤,
# if Prime(num) ==False:
#         num +=1
#         Prime(Num)
#     else:
#         print(num, end=",")
#         count -=1
#         if count >1:
#             print(num)
# 結構功能不清。
# 第21行 `num +=+1`錯誤,應為`num =int(num)+1
# 第17,18行錯誤,else應該和for處於同一層級。
# 
# for else語句應用相當精妙,當for迴圈正常完成時,就執行else語句。




相關文章