藍橋杯真題——組素數——python解析
阿新 • • 發佈:2021-01-14
素數就是不能再進行等分的數。比如:2 3 5 7 11 等。
9 = 3 * 3 說明它可以3等分,因而不是素數。
我們國家在1949年建國。如果只給你 1 9 4 9 這4個數字卡片,可以隨意擺放它們的先後順序(但卡片不能倒著擺放啊,我們不是在腦筋急轉彎!),那麼,你能組成多少個4位的素數呢?
比如:1949,4919 都符合要求
我們首先要列出1949有這些數字的列表,但是我們該去怎麼做才可以讓他們進行組裝?字串是一個很好的選擇,之後我們還要按照規律進行三層遍歷程式碼如下:
z = []
x = ['1', '9', '4', '9']
for i in range(len(x)):
o = x.pop(i)
for a in range(len(x)):
t = x.pop(a)
for b in range(len(x)):
T = x.pop(b)
Int = int(o+t+T+x[0])
n = int(Int**0.5)
for y in range(2, n):
if Int%y == 0:
continue
else :
break
到最後執行時卻有一個問題,我們會發現,我們把元素刪除後沒有再次新增,最後的X已經變成了之後一個元素的了,問題是我們如何把刪去的元素加上,只要有一個迴圈終止,都要加上這個迴圈中刪去的元素,我們就可以在最後加上,完整程式碼如下:
z = []
x = ['1', '9', '4', '9']
for i in range(len(x)):
o = x.pop(i)
for a in range(len(x)):
t = x.pop(a)
for b in range(len(x)):
T = x.pop(b)
Int = int(o+t+T+x[0])
n = int(Int**0.5)
for y in range(2, n):
if Int%y == 0:
continue
else:
break
x.append(T)
z.append(Int)
x.append(t)
x.append(o)
print(set(z))
為了避免重複元素,輸出時我把它變成了集合。