第11170题 单选
埃氏筛法内层循环从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
A

因为2*i一定不是合数

B

i*i一定是质数

C

小于i*i的i的倍数已被更小质因子筛过

D

这样可以把时间复杂度降为O(n)

程序运行统计
暂无判题统计