埃氏筛法内层循环从i*i开始而非2*i的主要原因是什么?
def eratosthenes_sieve_for(n):
if n < 2:
return []
is_composite = [False] * (n + 1)
primes = []
for i in range(2, n + 1):
if is_composite[i]:
continue
primes.append(i)
# 内层循环j从i*i开始,步长为i
for j in range(i * i, n + 1, i):
is_composite[j] = True
return primes
正在加载题目数据…
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析