'------------------------------------------------ '***** 1 ***** Option Explicit '変数の宣言を強制 Sub main() Const LIMIT = 1000 Dim n As Long, count As Long, r As Long count = 0 For n = 1 To LIMIT r = i_sqr(2 * n + 1) If (r * r = 2 * n + 1) Then count = count + 1 Cells(count, 1).Value = r Cells(count, 2).Value = n Cells(count, 3).Value = n + 1 End If Next n End Sub Function i_sqr(n As Long) As Long '平方根の整数部のみを返す関数 Dim i As Long, count As Long, sum As Long count = 0 sum = 0 i = 1 Do While sum < n i = i + 2 sum = sum + i count = count + 1 Loop i_sqr = count End Function '------------------------------------------------ '***** 2 ***** Option Explicit '変数宣言を強制 Sub main1() '奇数の自乗を、差が1の2数に分割する方法 Const LIMIT = 100 Dim n As Long, count As Long, tmp As Long count = 0 For n = 3 To LIMIT Step 2 tmp = n * n count = count + 1 Cells(count, 1).Value = n Cells(count, 2).Value = tmp \ 2 '「\」は整数除算の演算子。商の整数部分のみを返す。 Cells(count, 3).Value = tmp \ 2 + 1 Next n End Sub '------------------------------------------------ '***** 3 ***** Option Explicit '変数宣言を強制 Sub main2() Const LIMIT = 100 Dim n As Long, count As Long count = 0 For n = 1 To LIMIT count = count + 1 Cells(count, 1).Value = 2 * n + 1 Cells(count, 2).Value = 2 * n * n + 2 * n Cells(count, 3).Value = 2 * n * n + 2 * n + 1 Next n End Sub '------------------------------------------------