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

ni395144 单选题 共 个子题
bool is_prime(int n) {
    if (n <= 1)
        return false;
    if (n == 2 || n == 3 || n == 5)
        return true;
    if (n % 2 == 0 || n % 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;
正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧