Давайте посмотрим на значение y
после i
итераций:
y = 2+...+i
Циклы заканчиваются, когда y > n
, так что вы действительно спрашиваете, на какой итерации i
становится ли это условие истинным?
y > n
действительно 2+..+i > n
. Мы знаем, что 2+..+i = (n(n+1))/2 -1
так
y>n
становится (i(i+1))/2 > n+1
, который решает для i^2 +i > 2n+2
.
Должно быть достаточно легко увидеть, что i
отсюда O(sqrt(n))
.
Первое значение, при котором выполняется неравенство y > n
, пропорционально sqrt(2n+2)
.
Обратите внимание, что 2+..+i = (n(n+1))/2 -1
из-за известной закрытой формулы sum(1,2,3,...,k) = 1+2+3+...+k = (k(k+1))/2