循环的运行时间直到i * i <= n

时间:2013-10-18 09:28:17

标签: algorithm square-root big-theta

以下是代码:

int foo(int n)
{
    if(n == 1)
        return 1;
    int f = 0;
    int i;
    for(i=1; i*i<=n; i++)
        if(n%i == 0)
            f+=2;
    i--;
    if(i*i == n)
        f--;
    return f;
}

我的问题是我无法确定此for循环的Θ,
我认为它是平方根(n)但是有一个名为平方根n的命令吗?

我的回答是:
Theta(sqrt(n))因为这个循环

for(i=1; i*i<=n; i++) 

i * i <= n获取双方的sqrt

i <= sqrt(n)

如果我错了,请纠正我!

1 个答案:

答案 0 :(得分:1)

O(sqrt n)看起来很奇怪,但对我来说是正确的