python判断一个数是质数还是合数,质数的判断python

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: