這不是關於查找素數的問題,而是關於如何將代碼轉換爲函數。Python函數查找素數
所以我有這樣的代碼,以幫助我從2-100打印素數:
pnumber = [x for x in range(2, 101) if all(x % i for i in range(2, x))]
print(pnumber)
如果我這個變形點焊的功能,尋找素數範圍:
def p_number(a, b):
pnumber = [x for x in range(a, b+1) if all(x % i for i in range(2, b))]
print(pnumber)
p_number(2, 100)
您可以看到我使用a代替2,b代替100,並相應地更改代碼。但不知何故,這不起作用,它會輸出一個空的列表。
我想知道爲什麼?
那麼這是合乎邏輯的:因爲質數也在'範圍(2,b)'中。所以如果你測試'3',它會導致'3%3 == 0',因此'all(..)'將會失敗... –
'返回(pnumber)'更改'print(pnumber)' –
爲什麼'range(2,x)'變成'range(2,b)'? – asongtoruin