1. 程式人生 > 其它 >藍橋杯真題——組素數——python解析

藍橋杯真題——組素數——python解析

技術標籤:pythonpython

素數就是不能再進行等分的數。比如: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))

為了避免重複元素,輸出時我把它變成了集合。