第26744题 单选题
下列Python代码用于判断一个正整数是否是质数(素数),相关说法中正确的是()
def is_prime(N):
    if N <= 1:
        return False  # 处理所有非正整数
    if N == 2 or N == 3 or N == 5:
        return True
    if N % 2 == 0 or N % 3 == 0 or N % 5 == 0:
        return False
    i = 7
    step = 4
    finish_number = int(N ** 0.5) + 1
    while i <= finish_number:
        if N % i == 0:
            return False
        i += step
        step = 6 - step
    return True

#列出1-N之间所有质数
N = int(input())
print([n for n in range(1,N+1) if is_prime(n)])
A

代码存在错误,比如5是质数,但因为5 % 5余数是0返回了False

B

finish_number的值应该是N // 2,当前写法将导致错误

C

当前while循环正确的前提是:所有大于3的质数都符合6k±1形式

D

while循环修改如下,其执行效果与执行时间相同。

for i in range(2, finish_number):
    if N % i == 0:
        return False
return True
程序运行统计
暂无判题统计