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


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

    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
    
    
  • 相关阅读:
    安装win7 ubuntu双系统
    idea maven打jar包
    mongodb入门
    mongodb备份与恢复
    使用cmd时cd命令失效
    vue 项目中使用阿里巴巴矢量图标库iconfont
    vue img标签用法
    vue 点击当前元素改变样式
    vue 路由跳转传参
    iview table绑定双击事件
  • 原文地址:https://www.cnblogs.com/yangsun/p/12046261.html
Copyright © 2020-2023  润新知