前言
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, n = map(int, 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, n = n, m
5. 輸出答案
if sum == 0: “如果sum在前面的整個for回圈里都沒有素數加入”
print('not have prime!') “那么輸出'not have prime!'”
else: “否則”
print(sum) “輸出答案”
// An highlighted block
var foo = 'bar';
結束
如果你想覺得這篇博客對你有所幫助,點個贊吧,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/169975.html
標籤:其他
