文章目录
- Question
- Ideas
- Code
Question
题目描述
用筛法求之N内的素数。
输入
N
输出
0~N的素数
样例输入
100
样例输出
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
Ideas
筛法求素数
Code
# 筛法求素数 O(N)
# 可以得到2-n内的质数 1不是质数
N = 100010
primes= [0 for i in range(N)]
st = [0 for i in range(N)] # 当前数有没有被筛过 0代表没有被筛过 说明该数是质数 否则不是
def get_primes(n):
cnt = 0 # 质数下标
for i in range(2,n+1):
if not st[i]:
primes[cnt] = i
cnt += 1
j = 0
while primes[j] * i <= n:
st[primes[j] * i] = 1
if i % primes[j] == 0:
break
j += 1
n = int(input())
get_primes(n)
for i in range(n+1):
if primes[i]:
print(primes[i])