python 中用filter求素数的时候,这里的筛选函数是什么意思

Python018

python 中用filter求素数的时候,这里的筛选函数是什么意思,第1张

首先定义一个函数判断是否为素数,如果这个数能被2~它的平方根中的任一数整除的话它就不是素数,否则就是素数。用flag为0或1标记,利用filter()筛掉flag为0的非素数。

#!/usr/bin/env python

#coding:utf-8

import math

def filter_prime(n):    #定义filter_prime函数

    flag = 1    #设置flag,初始化为1

    for i in range(2, int(math.sqrt(n)+1)):     #取2至平方根的数

        if n%i == 0:    #判断是否是素数

            flag = 0     #如果不是,flag设为0

    if flag == 1:        #退出循环后判断flag,若为1(素数),则返回

        return n

print filter(filter_prime, range(1,101))    #filter 1-100里的非素数

1、新建python文件,testprimenum.py;

2、编写python代码,求1到100之间的素数;

list1 = []

i = 2

for i in range(2,101):

j = 2

for j in range (2,i):

if i%j == 0:

break

else:

list1.append(i)

print(list1)

3、窗口中右击,选择‘在终端中运行Python文件’;

4、查看执行结果,1-100之间的素数为:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]