c – 检查是否为素数大

前端之家收集整理的这篇文章主要介绍了c – 检查是否为素数大前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我确定一个数字是否为素数的原始函数是:
bool is_prime(int x) {
    for (int y = 2; y < x; ++y) {
        if (x % y == 0) {
            return false;
        }
    }
    return true;
}

这可能是复杂的O(x),因为你可能不得不去x.

我已经了解了一些优化,需要检查我的big-o.这是改进的计划:

bool is_prime(int x)
{   
    if (x % 2  == 0 && x > 2) {
        return false;
    }
    for (int y = 3; y*y <= x; y += 2) {
        if (x % y == 0) {
            return false;
        }
    }
    return true;
}

我现在上升到sqrt()的事实是否将其更改为O(sqrt(x))?

解决方法

是的,但这里没有.新函数的复杂性为O(sqrt(x)).当你说O(N)并且没有指定N是什么时,它通常被认为是输入的大小.这对于采用单个数字参数的函数来说是令人困惑的,因此在这些情况下,您应该是明确的.

猜你在找的C&C++相关文章