【问题标题】:finding the running time for my algorithm for finding whether an input is prime in terms of the input查找我的算法的运行时间,以查找输入是否就输入而言是素数
【发布时间】:2014-02-24 00:45:33
【问题描述】:

这是我查找素数的函数

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 中的输入。我正在尝试使用 big oh 查找运行时。我记得找到运行时间与日志有关。

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

【问题讨论】:

  • 不知道有没有关系,但是这段代码效率很低。

标签: c++ big-o primes


【解决方案1】:

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

(顺便说一句:它实际上是 theta(n) ,这意味着它不仅从上方以 n 为界,而且从下方以 n 为界)

【讨论】:

  • @TonyD 太糟糕了,我混淆了一点 o 和 theta :-( 它实际上是 theta(n) 而不是 o(n)。我将它改为 O(n) 因为它要好得多已知比 theta...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 2014-07-21
  • 2021-06-03
  • 2021-06-25
相关资源
最近更新 更多