从异常中学python(3)——求素数
从错误中学python(3)——求素数
题目
输出100以内的所有素数,素数之间以一个空格区分
定义函数法
这个方法代码比较多
def isSushu(x):
for i in range(2,x):
if(x%i==0):
return False
return True
print(' '.join([str(y) for y in [x for x in range(2,100) if isSushu(x)]]))
' '.join()
这种写法是把其中的itrable对象用空格分隔
嵌套法
print(' '.join(str(y) for y in [x for x in range(2,100) if not[i for i in range(2,x) if x%i==0]]))
这里只用一行代码就搞定了因为if 可以判断一个列表是不是空。
当然可以把生成式的方式改成map函数
有人使用filter函数
filter函数
import math
def is_prime(n):
for i in range(2, int(math.sqrt(n)) + 1):
if n%i==0:
return False
return True
primes = filter(is_prime, range(2, 100))
print(' '.join([str(p) for p in primes]))
一个奇怪的写法
for i in range(2, 101):
for j in range(2, i-1):
if i % j == 0:
break
else:
print(i)
这里的奇怪之处就在于 python按缩进分代码块 而else的位置就显得十分的莫名奇妙,不知道执行流程是怎么样的
版权声明:本文为博主原创文章,欢迎转载和分享,但请声明出处http://blog.****.net/zhzz2012