算法思路其实很简单,已知最小的质数为2,从2开始,判断其质数标志位为1,则将2~n之间以2为因数的所有整数的标志位置为0,接下来是从3开始,以此类推。
def find_primes(n : int):
is_prime = [1] * n
count = 0
primes = [] # 存储已找到的质数
for i in range(2, n):
if is_prime[i]:
primes.append(i)
count += 1
for j in range(i * i, n, i):
is_prime[j] = 0
print("小于{0}的质数共有{1}个".format(n, count))
print("质数列表为:{}".format(primes))
if __name__ == "__main__":
n = int(input("input your number n:"))
find_primes(n)