题目:
判断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
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日)