找到我的算法的运行时间,以便根据输入查找输入是否为素数

时间:2014-02-24 00:45:33

标签: c++ big-o primes

这是我查找素数的功能

void print(int num)
{
    for(int i=2; i<num/2; i++)
    {
        if(num%i==0)
        {
            cout<<"not prime\n";
            exit(0);
        }
    }
    cout<<"prime\n";        
}

我在num的输入我正在尝试使用大哦找到运行时。我记得找到运行时间与日志有关。

最糟糕的情况是我的程序会运行n / 2 -1次?

1 个答案:

答案 0 :(得分:3)

是的,循环运行n / 2-1次并且只包含具有恒定复杂度的命令,因此对于某些a,运行时缩放为*(n / 2-1)。在big-o中,这写为O(n / 2-1),因为常数因素无关紧要,所以等于O(n)。

(顺便说一下:它实际上是theta(n),这意味着它不仅仅是从上面被n限制而是从下面被n限制)