Python怎么判断一个数是不是质数,用python判断质数
首先,定义合数和质数的概念。
合数:能被除了1和它本身之外的其他数整除的自然数。(4,6,9,10.)
1 def heshu(m):2 list _ a=[]3 for I in range(2,m 1): 4 for j in range (2,I):5 if I % j==0:6 list _ a . append(I)#判断I是否能被(2,I)之间的数整除,如果能。
质数:一个大于1的自然数,除了1和它本身之外不能被其他数整除。(2,3,5,7.)
1 def zhi Shu(m):2 list _ a=[]3 for I in range(2,m 1): 4 flag=0 5 for J in range (2,i): 6 if I% j=0: 7 flag=1 #如果I能被(2,I)之间的一个数整除,将flag设置为1,跳出当前循环8 break 9 If flag==0:10 list _ a . append(I)#内循环执行后,如果flag未设置为1,则表示I为素数。添加列表11打印(list_a)12支书(20)
Tips
因为刚开始用python,还不了解它的内置函数,所以写代码的时候可能会更多的想到C的思路,总觉得整个代码有些臃肿。
尤其是写质数函数的时候,用i% j==0来判断合数,但是我们又要输出质数,于是就想到了用flag来标记合数来达到目的。
后来在别处看到用filter()函数处理的方法,觉得很符合python优雅的特点。
1 def zhi Shu 2(num):2 for I in range(2,num):3 if num % I==0:4 return false 5 return true 6 new _ list=list(filter(zhi Shu 2,range(2,21))7 print(new _ list)
如何使用filter()函数:
接收两个参数,第一个为函数f(输出布尔类型),第二个为序列ist,将list中的元素依次代入f中,根据函数中的判断条件选择返回True或者False,最后返回True的元素重新组成一个新的list。
当您自己使用该功能时,您希望首先直接打印它:
New _ list=filter (zhishu2,range (2,21)) print (new _ list)但是输出有问题
仔细看了这个函数的用法,发现这个过滤函数的输出应该是组成一个列表的元素,而不是直接一个列表,所以我需要再转换成一个列表:
New _ list=list (filter (zhishu2,range (2,21)) print (new _ list)这样输出才能正常。
转载于:https://www.cnblogs.com/jockeyhao/p/8489575.html
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。