#3351. [GESP202312 五级 C++] 第 8 题

[GESP202312 五级 C++] 第 8 题

下面C++代码中的 isPrimeA()isPrimeB() 都用于判断参数N是否素数,有关其时间复杂度的正确说法是( )。

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

{{ select(1) }}

  • isPrimeA() 的最坏时间复杂度是 O(N2)O(\frac{N}{2})isPrimeB() 的最坏时间复杂度是 O(logN)O(\log N)isPrimeA() 优于 isPrimeB()
  • isPrimeA() 的最坏时间复杂度是 O(N2)O(\frac{N}{2})isPrimeB() 的最坏时间复杂度是 O(N12)O(N^{\frac{1}{2}})isPrimeB() 绝大多数情况下优于 isPrimeA()
  • isPrimeA() 的最坏时间复杂度是 O(N12)O(N^{\frac{1}{2}})isPrimeB() 的最坏时间复杂度是 O(N)O(N)isPrimeA() 优于 isPrimeB()
  • isPrimeA() 的最坏时间复杂度是 O(logN)O(\log N)isPrimeB() 的最坏时间复杂度是 O(N)O(N)isPrimeA() 优于 isPrimeB()