首页 > 其他 > 详细

使用迭代器的方法找出素数

时间:2019-12-15 22:57:50      阅读:113      评论:0      收藏:0      [点我收藏+]

问题:自定义一个生成小于某个整数的所有素数的迭代器

class MySuShuIterator():

    def __init__(self,start,end):
        self.__start = start
        self.__end = end

    def __iter__(self):
        return self


    def __next__(self):
        for item in range(self.__start,self.__end):
            if self.isPrime(item):
                self.__start = item+1
                return item
        raise StopIteration

        
    def isPrime(self,item):
        if item == 1:
            return False
        else:
            for value in range(2,item):
                if item % value == 0:
                    return False
            return True

思路:
思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。
思路2):另外判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ m的开平方根之间的每一个整数去除就可以了。如果m不能被2~m的开平方根间任一整数整除,m必定是素数。
例如:判别17是否是素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数

编程思路:
1、先把创建迭代器的类写好,需新建一个迭代器的class, 定义上迭代器协议方法

class MyIteration(object):
    def __init__(self,start,end):
        self.start = start
        self.end = end
    def __iter__(self):
        return self

    def __next__(self):
        if [xxx]:
            pass
        else:
            raise StopIteration

2、在迭代器类里定义一个是否是素数逻辑的方法(重点:使用range()内置函数,拿到可以进行去整除的数)

def isPrime(self):
        if item == 1:
            return False
        else:
            for value in range(2,item):
                if item % value == 0:
                    return False
        return True

使用迭代器的方法找出素数

原文:https://www.cnblogs.com/yangsun/p/12046261.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!