« 桜桃 | トップページ | ダイオウイカのスルメ »

2015年2月23日 (月)

√2 の話:その25:整数平方根:2

★前の記事ではやたらとこだわりの強い話をしました。
もっと素直な方法もあるのにね。
要するに、nを超えない最大の平方数a^2を見つければ、そのaが求めるものであるわけです。
まるっきり効率的ではありませんが、aを2から順に自乗して、nと比べ、nを超えたら、一つ前のaを返せばいい。
単純明快です。
*******************
Option Explicit     '変数宣言を強制する、という宣言

Sub main()
    Dim i As Long

    For i = 0 To 40
       Cells(i + 1, 1).Value = i
       Cells(i + 1, 2).Value = isqrt3(i)
       Cells(i + 1, 3).Value = Int(Sqr(i))
    Next i

End Sub

Function isqrt3(n As Long) As Long
    Dim a As Long, b As Long

    a = 1
    If (n = 0) Then
        isqrt3 = 0
    Else
        Do
            a = a + 1
            b = a * a
        Loop While (b <= n)
        isqrt3 = a - 1
    End If
End Function
*******************
結果は全く同じですので、掲載しません。
整数平方根の、バージョン2でした。

« 桜桃 | トップページ | ダイオウイカのスルメ »

理科おじさん」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 桜桃 | トップページ | ダイオウイカのスルメ »

2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
サイト内検索
ココログ最強検索 by 暴想
無料ブログはココログ