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
"%len(li),li)
  ​

  

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

其他解答参考:

解答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

解答3:

  
  def isPrime(n):
       if n <= 1:
           return False
       i = 2
       while i*i <= n:
           if n % i == 0:
               return False
           i += 1
       return True
  ​
  def prime_num(x,y):
      prime_num_li= []
      for i in range(x,y):
          res = isPrime(i)
          if res:
              prime_num_li.append(i)
      print("素数共有%s个,分别是:%s"%(len(prime_num_li),prime_num_li))
  ​
  if __name__ == "__main__":
      prime_num(100,201)

  

分析:比较完善的写法,采用函数式思想写出的代码。

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

原文地址:https://www.cnblogs.com/Nicholas0707/p/9774284.html