角谷の問題 | 無線局 JP7FCS / ヤマガタST378

無線局 JP7FCS / ヤマガタST378

テーマ:アマチュア無線,デジタル簡易無線,オーボエ

資格:第二級アマチュア無線技士,第二級陸上特殊無線技士,測量士補,実用英語技能検定2級,漢字能力検定2級,数学検定2級

コラッツの問題(角谷の問題):数列{a(k)}を次のように定める.

a(1)=n (nは整数)・・・初項
a(k)=a(k-1)/2 (a(k-1)=偶数)
a(k)=3a(k-1)+1 (a(k-1)=奇数)

言い換えると,
a(1)=n (nは整数)・・・初項
前の項が偶数のときは2で割る
前の項が奇数のときは3倍して1を加える

このとき,a(k)=1となる整数kが存在する.
また,はじめてa(k)=1となるときのkをL(n)で表すことにする.

以下のプログラムをExcelのVisual Basic Editorにペースとして実行してください.



はじめてa(k)=1となるまでまでの数列{a(k)}を求める

Sub 角谷の問題()

Cells.Select
Selection.ClearContents
Dim n As Long

n = CInt(InputBox("n="))

Dim k As Long

k = 1

Cells(1, 1).Value = "k"
Cells(1, 2).Value = "a(k)"

Cells(k + 1, 1).Value = k
Cells(k + 1, 2).Value = n

Do While n > 1

If n Mod 2 = 0 Then
n = n / 2
Else
n =3 * n + 1
End If

k = k + 1

Cells(k + 1, 1).Value = k
Cells(k + 1, 2).Value = n

Loop

Range("A1").Select

End Sub



L(n)を求める
Sub 角谷の問題()

Cells.Select
Selection.ClearContents
Dim n As Long

n = CInt(InputBox("n="))

Dim k As Long
Dim l As Long
Dim s As Long

k = 1
s = 1

Cells(1, 1).Value = "n"
Cells(1, 2).Value = "length"

Cells(k + 1, 1).Value = k
Cells(k + 1, 2).Value = 1

For k = 2 To n

s = k
l = 1

Do While s > 1

If s Mod 2 = 0 Then
s = s / 2
Else
s = 3 * s + 1
End If

l = l + 1

Loop

Cells(k + 1, 1).Value = k
Cells(k + 1, 2).Value = l

Next k

Range("A1").Select

End Sub