✏️ 纠错
第 181 题 / 共 251 题
第5题 下列C++代码判断一个正整数是否是质数,说法正确的是( )。
bool is_prime(int n) {
    if (n < 2)
        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;
}
📝 题目解析

答案:C

知识点:质数的判断方法,质数的数学性质及算法优化

解析:A错误,代码中n==5直接返回true,不会执行后续判断;B错误,判断质数只需检查到sqrt(n)即可;C正确,大于3的质数均为6k±1形式(即循环中i按7,11,13,17...递增);D错误,修改后的循环会检查更多数字(如4,6等),执行时间更长。