该循环的三倍的复杂性

Complexity of this triple for loop?

本文关键字:三倍 复杂性 循环      更新时间:2023-10-16
for(i=1;i<=2237;i++)
{
    for(j=i+1;j<=2237;j++)
    {
        for(k=1;k*(i*i+j*j)<=5000000;k++)
        {
            a[k*(i*i+j*j)]=1;
        }
    }
}

这里的5 * 10^6可以假定为n,而2237近似为SQRT(n)。我能够找出外部2循环的复杂性,这是最内向的循环使我感到困惑。

如果输入决定了最内在循环中的迭代次数(如您所描述的那样):

外圈运行sqrt(N)次,然后中间环在平均 sqrt(N)/2上运行,外部环的每次迭代。然后,内环在中间环的每次迭代中运行n次。

so .... sqrt(N) * sqrt(N)/2 * N == (N-Squared / 2)

因此O(N-Squared)

如果输入决定了最外部环中的迭代次数,以使最内在的循环迭代计数始终是外部相互作用计数的平方值:

`N * N/2 * N-Squared = N**4 (N to the power of 4)`.  Hence, `O(N**4)`