Python的學習記錄與分享——PTA程式設計類教學平臺。如果你也正在學習關於此類的題目可以仔細閱讀這篇文章,瞭解一下回圈結構、素數的基本語法知識。
【描述】求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與該數本身兩個因數的數)。
m, n = map(int, input().split())
map()會根據提供的函數對指定序列做對映。它的返回結果是一個列表在
----這裡的作用就是將多個輸入值批次轉換成in----
split()方法指定分隔符對字串進行切片,如果引數num 有指定值則僅分隔 num 個子字串
----這裡的作用就是將輸入的一條字串以空格為分隔符切割----
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
定義一個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)素數」
上面的素數判斷都會了後會發現一個問題就是,如果使用者輸入100 1時執行會發生錯誤那麼我們則需要在判斷素數前保證m是小的值,n是大的值。
if m > n:
m, n = n, m
if sum == 0: 「如果sum在前面的整個for迴圈裡都沒有素數加入」
print('not have prime!') 「那麼輸出'not have prime!'」
else: 「否則」
print(sum) 「輸出答案」
// An highlighted block
var foo = 'bar';
如果你想覺得這篇部落格對你有所幫助,點個贊吧。