下列C++代码判断 个正整数是否是质数,说法正确的是( )。 一
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 循环修改如下,其执行效果和执行时间相同。 1 for (int i = 2; i < finish_number; i++) { 2 if (n % i == 0) 3 return false; 4 } 5 return true;
正确答案:C