原です。 In [ruby-math:00955] >正木です。 > >In [ruby-math:00948] > >|原です。 > >|ちょっと証明の補強します。プログラムでは >少なくとも a, b, c が正のときは > >(a.div(b)).div(c) == a.div(b * c) > >なのでまったく問題が無いのでは? その通りです。混乱させてしまってすいません。正木さんの [ruby-math:00945] の証明は完全でした。なんと私はその公式に気づい ていなかったのです。私の証明は別証に過ぎませんでした。 公式の証明をしておきますね。次は補題と呼ぶにも大げさですが、 【補題】A, B, C(>0) を整数とすると「A/C < B ならば (A + 1)/C <= B.」 さて、一般の x について次が言えます。 【命題】n を自然数とすると [[x]/n] = [x/n]。 (証明)[x]/n < [[x]/n] + 1 に【補題】を適用して ([x] + 1)/n <= [[x]/n] + 1. x/n < 左辺、より x/n < [[x]/n] + 1. x/n >= [[x]/n] の方は明らかだから、 [[x]/n] = [x/n]. ここで x = a/b, n = c として当てはめると、 【系】c が自然数なら a.div(b).div(c) == a.div(b*c). ちなみに、[[3/2]/1.5] = 0、 [3/(2*1.5)] = 1 なので、c が自然数で あるという条件ははずせません。 うーん、今まで知らなかったとは、、、内緒にしておいてください。 (^^; 次は、近岡さんの [ruby-math:00947] の別証です。帰納法の仮定を |(x/k - sqrt([a/k**2])| < 1 から |x/k - sqrt(a/k**2)| < 1 へ 変更してシンプルにしただけです。 【定理】x, k を自然数で 2|k|x, k**4 <= 4*a とするとき、 N(x) = [(x + [a/x])/2] に対し次が成り立つ。 |x/k - sqrt(a)/k| < 1 ならば |N(x) - sqrt(a)| < 1. (証明)y = (x**2 + a)/(2*x) とおくと上の【系】から N(x) = [y] で ある。また、仮定より y - sqrt(a) = (x - sqrt(a))**2/(2*x) < k**2/(2*x). 一方、k**4 <= 4*a より k/2 <= sqrt(a)/k. 再び仮定より、sqrt(a)/k < x/k + 1 なので k/2 < x/k + 1. 両辺は整数だから、k/2 <= x/k. よって k**2/(2*x) <= 1. 以上より y - sqrt(a) < 1. y の整数部分をとって -1 < N(x) - sqrt(a) < 1.