python判断一个数是质数还是合数,质数的判断python
Python判断复合质数
首先,定义合数和质数的概念。
合数:除了1和它本身之外,还能被其他数整除的数(4,6,9,10.)defheshu(m):
list_a=[]
foriinrange(2,m ^ 1):
forjinrange(2,I):
如果%j==0:
List_a.append(i)#判断I是否能被(2,I)之间的数整除,如果能整除,则为合数,加到链表中。
破裂
打印(列表_a)
和书(20)
质数:数字(2,3,5,7.)指大于1的自然数,除了1和它本身之外不能被其他数整除。Def Zhishu (m):
list_a=[]
foriinrange(2,m ^ 1):
标志=0
forjinrange(2,I):
如果%j==0:
Flag=1#如果I能被(2,I)之间的数整除,则将Flag设置为1,跳出当前循环。
破裂
ifflag==0:
List_a.append(i)#内循环执行后,如果flag没有设置为1,则表示I是一个素数,并添加List。
打印(列表_a)
支书(20)
技巧
因为刚开始用python,还不了解它的内置函数,所以写代码的时候可能会更多的考虑C的思路,总觉得整个代码臃肿。
尤其是写质数函数的时候,用i% j==0来判断合数,但是我们又要输出质数,于是就想到了用flag来标记合数来达到目的。
后来在别处看到用filter()函数处理的方法,觉得这很符合python优雅的特性。defzhishu2(数字):
foriinrange(2,num):
ifnum%i==0:
返回False
返回真
new_list=list(filter(zhishu2,range(2,21)))
打印(新列表)
如何使用filter()函数:
接收两个参数,第一个是函数F(输出布尔类型),第二个是序列ist。将列表中的元素依次代入F,根据函数中的判断条件选择返回True或False。最后,返回True的元素形成一个新的列表。
我自己用这个函数的时候,一开始想直接打印出来:new _ list=filter (zhishu2,range (2,21))
打印(新列表)
但是输出有问题
仔细看了这个函数的用法,发现这个过滤函数的输出应该是组成一个列表的元素,而不是直接的列表,所以需要转换成一个列表:new _ list=list (filter (zhishu2,range (2,21)))
打印(新列表)
以便输出可以正常。
资料来源:http://www.bubuko.com/infodetail-2511657.html
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。