Python求區間正整數內所有素數之和的方法例項
前言
Python的學習記錄與分享——PTA程式設計類教學平臺。如果你也正在學習關於此類的題目可以仔細閱讀這篇文章,瞭解一下迴圈結構、素數的基本語法知識。
題目:
7-5就區間正整數內所有素數之和 (20分)
【描述】求m-n以內所有素數之和並輸出。素數指從大於1,且僅能被1和自己整除的整數。提示:可以逐一判斷區間[m,n]之間以內每個數是否為素數,然後求和。若m–n之間無素數,則輸出“not have prime!”:
輸入格式:
在一行輸入2個正整數m,n。m可以大於n。例如計算1–100之間(包括100),可以輸入100 1
輸出格式:
若有素數,輸出素數之和的一個整數,若該區間沒有素數則輸出not have prime!。
輸入樣例:
1 100
輸出樣例:
1060
答案
m,n = map(int,input().split()) sum = 0 if m > n: m,n = n,m for i in range(m,n+1): if i != 1: for j in range(2,i): if i % j == 0: break else: pass else: sum += i if sum == 0: print('not have prime!') else: print(sum)
詳細解析:
首先了解什麼是素數
質數(Prime number),又稱素數,指在大於1的自然數中,除了1和該數自身外,無法被其他自然數整除的數(也可定義為只有1與該數本身兩個因數的數)。
舉個例子:7這個數,從2開始一直到6,都不能被它整除,只有1和它本身(7)才能被整除,所以7就是一個質數。
編寫程式碼
1. 根據題目要求:在一行輸入2個正整數m,n。
m,input().split())
map()會根據提供的函式對指定序列做對映。它的返回結果是一個列表在
----這裡的作用就是將多個輸入值批量轉換成in----
split()方法指定分隔符對字串進行切片,如果引數num 有指定值則僅分隔 num 個子字串
----這裡的作用就是將輸入的一條字串以空格為分隔符切割----
2. 首先學會判斷一個數是不是素數的程式碼
i=7 "用7舉例" for j in range(2,i): "for迴圈讓7除以2-7之間的數" if i % j == 0: break "如果是i除j等於0說明不是素數直接(break)結束迴圈" else: print("是素數")
range(start,end,step=)-----range(開始值,結束值,步長)沒寫預設為1
3. 判斷多個數是不是素數
定義一個i,用for迴圈讓i在裡面m-n之間取值
for i in range(m,n+1): if i != 1: “開始的條件必須是i不能等於1” for j in range(2,i): if i % j == 0: break else: pass else: sum += i “如果是就在sum裡面加上這個(i)素數”
4. m、n從小到大排序
上面的素數判斷都會了後會發現一個問題就是,如果使用者輸入100 1時執行會發生錯誤那麼我們則需要在判斷素數前保證m是小的值,n是大的值。
if m > n: m,m
5. 輸出答案
if sum == 0: “如果sum在前面的整個for迴圈裡都沒有素數加入” print('not have prime!') “那麼輸出'not have prime!'” else: “否則” print(sum) “輸出答案”
// An highlighted block var foo = 'bar';
結束
到此這篇關於Python求區間正整數內所有素數之和的文章就介紹到這了,更多相關Python區間正整數內所有素數之和內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!