For loop 大O余数/模循环

For loop 大O余数/模循环,for-loop,big-o,modulo,For Loop,Big O,Modulo,我正在计算一个函数: total = 0; for (i = 0; i < N; i++){ for (j = 0; j < i*i; j++){ if (j % i == 0){ for (k=0; k < j; k++){ total++; total=0; 对于(i=0;i

我正在计算一个函数:

total = 0;
for (i = 0; i < N; i++){
  for (j = 0; j < i*i; j++){
     if (j % i == 0){
        for (k=0; k <  j; k++){
          total++;
total=0;
对于(i=0;i

当您将其分解时,我会为N^4或N^5指定一个大的O号。我不确定如何处理%号和该内部循环的运行时间。

大致相当的代码是

total=0;
for (i=1; i<=N; i++)
    for(j=1; j <= i*i; j+= i)
        for (k=1; k <= j; k++)
            total++;

j
循环迭代相同的次数,但我们只需对简单整数进行迭代,然后将乘法移到
k
循环中,就可以更容易地证明
total
是增量O(N^4)次数:内部
k
循环运行O(N^2)次,并且自身在O(N^2)个值上迭代。

您能修复缩进吗?内部循环何时运行还不完全清楚。可能重复
total=0;
for (i=1; i<=N; i++)
    for(j=1; j <= i; j+= 1)
        for (k=1; k <= j*j; k++)
            total++;