class Prime:
def __init__(self,b,n):
self.begin = b
self.count = n
def __repr__():
return 'Prime(%s,%s)'%(self.begin,self.count)
def __iter__(self):
'''创建一个迭代器'''
return Primeiterable(self.begin,self.count)
class Primeiterable:
@staticmethod #静态函数 判断素数
def primenext(m):
for i in range(2,m+1):
if m % i == 0:
break
else:
return m
def __init__(self,begin,num):
self.count = 0 #素数出现的次数
self.number = num
self.begin = begin
def __next__(self):
#判断素数出现的次数与需要几个素数
if self.count >= self.number:
raise StopIteration
#进行遍历self.begin后面的数进行判断
else:
while True:
if self.primenext(self.begin):
self.count += 1 #计数加1
n = self.begin
self.begin +=1
return n
self.begin += 1
L = [x for x in Prime(10,4)]
print(L) #L = [11,13,17,19]
写一个实现迭代器协议的类,让此类可以生成从b开始的n个素数
猜你喜欢
转载自blog.csdn.net/zhangshuaijun123/article/details/82118815
今日推荐
周排行