单选题

下列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


赣ICP备20007335号-2