algorithm - 一个循环的运行时间直到 i*i <= n

标签 algorithm square-root big-o

代码如下:

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)

如果我错了请纠正我!

最佳答案

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

关于algorithm - 一个循环的运行时间直到 i*i <= n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19446149/

相关文章:

python - 该代码如何找到二叉树的最小深度?

javascript - 如何在javascript中对值进行平方和求和

Javascript for 循环,计算两个数据数字之间所有数字的平方根,通过表单相加

algorithm - log(n^c) 是否等于 O(log(n))

python - 在时间范围列表中查找公共(public)时间段python

算法/图表 : Maintain sets

c - 在给定数组中查找给定元素

java - Java中BigDecimal的平方根

c - 确定 Big-O 复杂性

data-structures - 合并两个排序的链表——理解为什么它是 O(1) vs. O(N) 空间复杂度