题目:编写一个生成器函数myprimes(start, end),实现[start, end)范围内的所有素数计算2 3 5 7. ...
第一 常规函数方法
方法1
def myprime(num): if num == 1: return False elif num == 2: return 2 for i in range(2, num): if num % i == 0: return False return num def myprimes(start,end): for i in range(start,end): if myprime(i): print(i) myprimes(1,20)
输出结果:
2 3 5 7 11 13 17 19
方法2
def myprime(num): if num == 1: return False k = int(num/2 +1) for i in range(2,k): if num % i == 0: return False return num def myprimes(start,end): for i in range(start,end): if myprime(i): print(i) myprimes(1,20)
运行结果
2 3 5 7 11 13 17 19
方法3
def myprime(x): """判断一个数x是否为素数,如果为素数, 返回True,否则返回False """ if x <= 1: return False for i in range(2, x): if x % i == 0: return False return True def myprimes(start, end): for i in range(start,end): if myprime(i): print(i) myprimes(1,20)
运行结果
2 3 5 7 11 13 17 19
方法4(该方法不用函数)
for i in range(2,20): fg = 0 for j in range(2,int(i/2)): if (i % j ==0): fg=1 if (fg == 0): print(i)
运行结果
2 3 5 7 11 13 17 19
第二 生成器函数
def myprime(x): """判断一个数x是否为素数,如果为素数, 返回True,否则返回False """ if x <= 1: return False for i in range(2, x): if x % i == 0: return False return True def myprimes(start, end): for i in range(start,end): if myprime(i): yield i print([x for x in myprimes(1, 10)]) for x in myprimes(1,10): print(x)
运行结果
[2, 3, 5, 7]
2
3
5
7