这个算法的复杂性是多少?

时间:2016-09-13 02:48:12

标签: c++ complexity-theory

此算法的时间复杂度是多少?

void prime(int n) { 
    int i = 2;
    while ((n % i) && i <= sqrt(n))
        i++;

    if (i > sqrt(n))
        print(“%d is a prime number\n”, n);
    else
        print(“%d is not a prime number\n”, n);
}

2 个答案:

答案 0 :(得分:1)

复杂度约为O(sqrt(N))。有些书会将其表示为O(N 0.5 )。

在循环的每次迭代中重新计算平方根。这是一个相当慢的操作,因此它比最佳速度慢,但只是一个常数因子,因此它不会影响计算复杂性。

答案 1 :(得分:0)

早些时候我错了。 嘿,这只是O(sqrt(n))...... 查看while contion为所有x&lt; = sqrt(n)执行,它将n除。所以我最多可以运行O(sqrt(n))次。所以是O(sqrt(n))。没有其他因素。