第20860题 单选
判断C++中两个素数判断函数isPrimeA()和isPrimeB()的最坏时间复杂度的正确说法是哪一项

以下C++代码实现了两个判断参数N是否为素数的函数isPrimeA()和isPrimeB(),请选择关于二者最坏时间复杂度的正确描述:

#include <iostream>
#include <cmath>
using namespace std;

bool isPrimeA(int N) {
    if (N < 2)
        return false;
    for (int i = 2; i < N; i++)
        if (N % i == 0)
            return false;
    return true;
}

bool isPrimeB(int N) {
    if (N < 2)
        return false;
    int endNum = int(sqrt(N));
    for (int i = 2; i <= endNum; i++)
        if (N % i == 0)
            return false;
    return true;
}

int main() {
    cout << boolalpha;
    cout << isPrimeA(13) << " " << isPrimeB(13) << endl;
    return 0;
}
A

isPrimeA() 的最坏时间复杂度是 O(N),isPrimeB() 的最坏时间复杂度是 O(√N),isPrimeB() 优于 isPrimeA()。

B

isPrimeA() 的最坏时间复杂度是 O(√N),isPrimeB() 的最坏时间复杂度是 O(N),isPrimeA() 优于 isPrimeB()。

C

isPrimeA() 的最坏时间复杂度是 O(N),isPrimeB() 的最坏时间复杂度是 O(√N),isPrimeA() 优于 isPrimeB()。

D

isPrimeA() 和 isPrimeB() 的最坏时间复杂度均为 O(√N),二者的运行效率相同。

提交0次 正确率0.00%
答案解析