'------------------------------------------------ Option Explicit '変数の宣言を強制する Sub main() 'エクセルのシートに結果を出力するプログラム Const LIMIT = 100 Dim m As Integer, n As Integer Dim a As Integer, b As Integer, c As Integer Dim count As Integer, work As Integer count = 0 'セルの位置指定のための変数を初期化 For m = 2 To LIMIT n = m - 1 'nは(m-1)から始めて、2ずつ小さくする。→m+nは奇数になる While (n > 0) If (gcm(m, n) = 1) Then 'gcmは最大公約数を求める関数。戻り値が1の場合、2数は互いに素。 count = count + 1 '結果を書き込むセルの行を1アップ a = m * m - n * n 'a,b,c を計算 b = 2 * m * n c = m * m + n * n If (a > b) Then 'a 0) If (gcm(m, n) = 1) Then count = count + 1 a = m * m - n * n b = 2 * m * n c = m * m + n * n If (a > b) Then work = a a = b b = work End If Print #1, count; Tab; a; Tab; b; Tab; c; Tab; m; Tab; n 'ファイルに書き込む End If n = n - 2 Wend Next m Close #1 'ファイルを閉じる End Sub '------------------------------------------------ Function gcm(a As Integer, b As Integer) '最大公約数を求めて返す関数:ユークリッドの互除法を使用 Dim r As Integer '関数内部で使う変数 If (a < b) Then gcm = gcm(b, a) '再帰呼び出し Else r = a Mod b 'Mod は割り算の余りを返す演算子 If r = 0 Then gcm = b Else gcm = gcm(b, r) '再帰呼び出し End If End If End Function