Python:每日一题008

时间:2023-03-09 17:01:39
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循环判断一个数是否属于素数。

其他解答参考:

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