Если мы используем j = i;
вместо j = n / (n / i);
, сложность времени будет O (n).
Теперь это j = n / (n / i);
, предположим, что n = i * k + r , где k и r - целые числа, а r = n% i . Таким образом, j = (i * k + r) / ((i * k + r) / i) = (i * k + r) / k = i + r / k> = i, что означает, что i будет увеличиваться быстрее, чем случай, когда вы используете j = i;
. Так что, по крайней мере, временная сложность меньше, чем O (n), что, я полагаю, дает вам еще один O (n).
И, кроме большой записи O, существуют еще две записи (Θ и Ω), которые означают нижнюю и верхнюю границу O (n). Вы можете получить сложность времени, найдя эти две границы. И есть другое правило, если я правильно помню, O (k * n) = O (n), коэффициент k не имеет значения, независимо от того, насколько он велик.