連續質數計算


描述

 補充編程模板中代碼,完成如下功能:

獲得用戶輸入數字N,計算並輸出從N開始的5個質數,單行輸出,質數間用逗號,分割。

注意:需要考慮用戶輸入的數字N可能是浮點數,應對輸入取整數;最后一個輸出后不用逗號。

輸入輸出示例

輸入:12

輸出:13,17,19,23,29

 1 def prime(m):
 2     if m <= 2:
 3         return 2
 4     else:
 5         while True:
 6             for i in range(m - 2):
 7                 if m % (i + 2) == 0:
 8                     break
 9             else:
10                 return m
11                 break
12             m = m + 1
13 
14 n = eval(input())
15 n = int(n)+1
16 a = prime(n)
17 b = prime(a + 1)
18 c = prime(b + 1)
19 d = prime(c + 1)
20 e = prime(d + 1)
21 print("{},{},{},{},{}".format(a, b, c, d, e))

參考答案:

 1 def prime(m):
 2     for i in range(2,m):
 3         if m % i == 0:
 4             return False
 5     return True
 6 
 7 n = eval(input())
 8 n_ = int(n)
 9 n_ = n_+1 if n_ < n else n_
10 count = 5
11 
12 while count > 0:
13     if prime(n_):
14         if count > 1:
15             print(n_, end=",")
16         else:
17             print(n_, end="")
18         count -= 1 
19     n_ += 1

參考答案后改進自己的代碼:

 1 def prime(m):
 2     if m <= 2:
 3         return 2
 4     else:
 5         while True:
 6             for i in range(m - 2):
 7                 if m % (i + 2) == 0:
 8                     break
 9             else:
10                 return m
11                 break
12             m = m + 1
13 n = eval(input())
14 n = int(n)+1 if n > int(n) else int(n)
15 n = prime(n)
16 for i in range(4):
17     print(n,end = ",")
18     n = prime(n+1)
19 print(prime(n))

1、兩個自定義的函數功能不同,答案中的函數只是返回是否為質數;而本人寫的函數是返為大於等於n的第一個質數,感覺還是答案的方法好理解。

2、關於浮點數的處理方面,自己寫的第一個代碼是有問題的,參考了答案的方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM