найти время выполнения моего алгоритма для определения того, является ли вход простым с точки зрения ввода

0

Это моя функция для нахождения простых чисел

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";        
}

Мой ввод в число. Я пытаюсь найти время выполнения, используя большой о. Я помню, что поиск времени выполнения имел какое-то отношение к журналу.

В худшем случае моя программа будет запускать n/2 -1 раз?

  • 1
    Я не знаю, имеет ли это значение, но этот код очень неэффективен.
Теги:
big-o
primes

1 ответ

3

Да, цикл работает n/2-1 раз и содержит только команды постоянной сложности, поэтому ваше время выполнения оценивается как * (n/2-1) для некоторого a. В big-o это записывается как O (n/2-1), и поскольку постоянные факторы не имеют значения, это равно O (n).

(как в сторону: это фактически theta (n), что означает, что он не просто ограничен сверху n, но также снизу на n)

  • 0
    +1 за пометку "о (н)" - так мило! ;-)
  • 0
    @ TonyD Жаль, что я немного перепутал o и theta :-( это на самом деле theta (n), а не o (n). Я изменю его на O (n), потому что он гораздо лучше известен, чем theta ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню