下列Python代码用于判断一个正整数是否是质数(素数),相关说法中正确的是( )。

eg556329 单选题 共 个子题
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
正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧