TOP 自分の思い 邪馬台国 バイク 瓢箪 霊場巡り 囲碁と将棋 CAD/CAM 生産管理 海外の思い出 索引
3倍して1を足すプログラム
*L1の下のN=300001が初期値である
最初は3から始め、5,7,9・・・とやっていく
その時のN2の変化を確認してほしい
飽きてくるとこのような大きな数字で遊びたくなる
ただし高速なので、何行かに一回程度休みを
いれて目で追う時間を取ると良い
下から3番目のInput文はその意味である
いつやっても大きな数字が徐々に小さくなってく
るのは楽しい
時々、一旦初期値より大きな数字になることが
ある
こういった数字だけを集めて、その特性を調べる
のも面白そうだ
原因は判らないがActivBasicの64ビット整数型
で計算したが、1億位の桁で計算精度が甘く
なり、答えが合わなくなるため、このプログラム
ではそれ以上計算できなくなるようである
(例:100000000000/2 と 100000000
02/2の答えが同じになる、64ビット整数型の
扱える桁数は約1844、0000,0000,0000,
0000となっているのでおかしい)
まあ余興なので、これ以上追求はしないし、読者
の作ったプログラムは問題ないと思うが、
自分の作ったプログラムが予定通り動いている
か確認してから長時間運転に入って欲しい
そうしないと、パソコンがかわいそうである
#N88BASIC
Dim N as Qword
Dim N2 as Qword
Dim N3 as Qword
Dim X as Integer
N=300001
*L1
N2=N
*L2
N3=N2-Int(N2/2)*2
If N2=1 Then N=N+2:Goto *L3
If N3=0 Then N2=N2/2:Goto *L2
N2=N2*3+1
Goto *L2
*L3
Print N,"";
If N-Int(N/5)*5=0 Then Print
If N-Int(N/99)*99=0 Then Input X
Goto *L1
end