先交个小作业

测试题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)。不知道有没有什么更好的算法呢。

你可能感兴趣的:(先交个小作业)