单选题

下列C++代码判断一个正整数是否是质数,说法正确的是(    )。

bool is_prime(int n){
    if(n<= 1)
        return false;
    if(n==2||n==3l|n== 5)
        return true;
    if(n%2=0ln%3==0|n%5==0)
        return false;

    int i = 7;
    int step =4;
    int finish number = sqrt(n)+ 1;
    while(i<= finish_number){
        if(n%i == 0)
            return false;
        i += step;
        step=6-step;
    }
    return true;
}
A

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

B

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

C

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

D

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

for(int i=2;i<finish_number; i++){
    if(n %i == 0)
        return false;
}
return true;


赣ICP备20007335号-2