1. 程式人生 > >Python中利用filter()函式刪除1-100中的素數

Python中利用filter()函式刪除1-100中的素數

法一:

import math
def fil(n):
    flag=0 #設定flag
    for i in range(2,int(math.sqrt(n)+1)):
        if n%i==0: #判斷是否為素數
            flag=1 #若不是素數,設定flag=1
            break
    if flag==1: #退出迴圈判斷flag,若為1(即不是素數),則返回其值
        return n
print(list(filter(fil,range(1,101))))

法二:

def fil(x):
    for y in
range(2,x): if x%y==0: return True return False print(list(filter(fil,range(1,101))))

關於法一的問題是:此程式碼為什麼能把元素2剔除?
關於法二的問題是:為什麼在同一個if下返回True和False?