先交个小作业
2017-05-23 本文已影响0人
Snow__
测试题1:求100以内的素数。
思路:简单粗暴,两次遍历,看每个数能不能被从2开始到本身的数(其实可以到本身的平方根就可以啦)整除。
def is_prime(n):
if n == 1:
return False
for i in range(2, n + 1):
fg = 1
for j in range(2, i):
if i % j == 0:
fg = 0
break
if fg == 1:
print(i)
is_prime(100)
其实用列表写起来会更方便些,因为想着不用列表,所以就没有使用列表。(啊啊啊,C语言式的写法,一点都不Python!)
看到群里小伙伴的另一种思路:先建立一个0-100的列表,每遍历一个数,就把它的倍数删除。一边遍历一边删除,剩下来的就是素数了。但是这种算法的时间复杂度也是O(n^2)。不知道有没有什么更好的算法呢。