比如求2到10^3的质数
# 求解质数
# 方法一
# 暴力解法,单个i循环时间复杂度为O(n)
res = [2]
for i in range(3,10**3+1):
judge = True
for j in range(2,i):
if i % j == 0:
judge = False
break
if judge == True:
res.append(i)
print(res)
# 方法二
# 一个数的至少有一个因数一定小于或等于这个数的平方根,单个i循环时间复杂度O(n**(1/2))
res = [2]
for i in range(3,10**3+1):
judge = True
for j in range(2,int(i**(1/2)+1)):
if i % j == 0:
judge = False
break
if judge == True:
res.append(i)
print(res)
# 方法三
# 埃及筛:如果 x是质数,那么大于 x 的 n 的倍数 2x,3x,… 一定不是质数
# 时间复杂度为O(nloglogn)
res = [2]
ans = [True for _ in range(10**3+1)]
for i in range(2,10**3+1):
if ans[i]:
res.append(i)
for j in range(2*i,10**3+1,i):
ans[j] = False
print(res)