Очевидно, что внешний этаж не является избыточным, поскольку, например, sqrt(2)
не является целым числом и, следовательно, floor(sqrt(2))≠sqrt(2)
.
Также легко увидеть, что sqrt(floor(x))≠sqrt(x)
для нецелого числа x
. Поскольку sqrt
является монотонной функцией.
Нам нужно выяснить, действительно ли floor(sqrt(floor(x)))==floor(sqrt(x))
для всех рациональных (или действительных).
Докажем, что если sqrt(n)<m
, то sqrt(n+1)<m+1
для целых чисел m,n
. Легко видеть, что
n<m^2 ⇒ n+1 < m^2+1 < m^2+2m+1 = (m+1)^2
Таким образом, из-за того, что sqrt
является монтоном, мы имеем, что
sqrt(n) < m -> sqrt(n+1) < m+1 -> sqrt(n+eps)<m+1 for 0<=eps<1
Для этого floor(sqrt(n))=floor(sqrt(n+eps))
для всех 0<eps<1
и целых чисел n
. В противном случае предположим, что floor(sqrt(n))=m
и floor(sqrt(n+eps))=m+1
, и у вас есть случай, когда sqrt(n)<m+1
однако sqrt(n+eps)>=m+1
.
Итак, предполагая, что необходим внешний floor
, внутренний floor
является избыточным.
Иначе говоря, всегда верно, что
floor(sqrt(n)) == floor(sqrt(floor(n)))
А как же внутренний ceil
?
Легко видеть, что floor(sqrt(n)) ≠ floor(sqrt(ceil(n)))
. Например
floor(sqrt(0.001))=0, while floor(sqrt(1))=1
Однако вы можете доказать аналогичным образом, что
ceil(sqrt(n)) == ceil(sqrt(ceil(n)))