python判断一个数是质数还是合数,python如何判断质数(素数)
首先,定义合数和质数的概念。
合数:能被除了1和它本身之外的其他数整除的自然数。(4,6,9,10.)
1 defhe Shu(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)之间的数整除,如果能。
7休息
8打印(列表_一)9和书(20)
质数:一个大于1的自然数,除了1和它本身之外不能被其他数整除。(2,3,5,7.)
1 def zhi Shu(m):2 list _ a=[]3 for I in range(2,m 1): 4 flag=05 for J in range (2,i): 6 if I% j==0: 7 flag=1 #如果I能被(2,I)之间的数整除,则将flag设置为1,1
8休息
9 if flag==0:10 list_a.append(i) #内循环执行后,如果flag没有设置为1,则表示I是一个素数。添加列表。
11打印(list_a)12支书(20)
技巧
因为刚开始用python,还不了解它的内置函数,所以写代码的时候可能会更多的想到C的思路,总觉得整个代码有些臃肿。
尤其是写质数函数的时候,用i% j==0来判断合数,但是我们又要输出质数,于是就想到了用flag来标记合数来达到目的。
后来在别处看到用filter()函数处理的方法,觉得这很符合python优雅的特性。
1 defzhi 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。将列表中的元素依次代入F,根据函数中的判断条件选择返回True或False。最后,返回True的元素形成一个新的列表。
当您自己使用该功能时,您希望首先直接打印它:
new_list=filter(zhishu2,range(2,21))print(new_list)
但是输出有问题
仔细看了这个函数的用法,发现这个过滤函数的输出应该是实际存储在链表中的物理地址(而不是组成链表的元素),而不是直接一个链表,所以需要重新转换成一个链表:
new_list=list(filter(zhishu2,range(2,21)))print(new_list)
以便输出可以正常。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。