Python:每日一题008

题目

判断101-200之间有多少个素数,并输出所有素数。

程序分析:

判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

个人思路及代码:

  li=[]
  def is_prime(num):
      n = int(sqrt(num))
      for i in range(2,n+1):
          if num % i == 0:
              print("%s不是素数"%num)
              break
      else:
          print("%s是素数" % num)
          li.append(num)
  ​
  for j in range(100,201):
      is_prime(j)
  print("100-200之间的素数个数是%s\n"%len(li),li)
  ​

  

分析:将判断一个数是否属于素数写成函数,用for循环判断一个数是否属于素数。

其他解答参考:

扫描二维码关注公众号,回复: 3534998 查看本文章

解答1:

  
  print("----------判断101-200之间有多少个素数----------")
  ​
  count = 0
  ​
  for i in range(101, 200):
      flag = 0
      for j in range(2, int(i ** 0.5) + 1):
          if i % j == 0:  # 如果不是素数
              flag = 1
  ​
      if flag == 0:
          count += 1
          print(i)
  ​
  print("101-200之间有 %d 个素数" % count)

  

分析:采用flag的方式,设置标志,逐个输出素数

解答2:

 
 print([i for i in range(101,200) if all(i%ii for ii in range(2,int(i**0.5)+1))])

  

分析:采用了列表解析式,限定了i的范围,同时用内置函数all判断,如果该数除以i**0.5+1余数为0则不是素数,all里面有0则if为false

(本文编号008,首发于2018年10月11日)

猜你喜欢

转载自www.cnblogs.com/Nicholas0707/p/9774284.html