Python の宿題ここで答えます Part 2
■ このスレッドは過去ログ倉庫に格納されています
0222デフォルトの名無しさん
2011/02/09(水) 08:51:54nを2以上の自然数とし、以下の操作を考える。
(i)nが偶数ならば、nを2で割る。
(ii)nが奇数ならば、nを3倍して1を加える。
与えられた2以上の自然数にこの操作を行い、得られた自然数が1でなければ、
得られた自然数にこの操作を繰り返す。2以上10の5乗以下の自然数から始めると、
この操作を何回か繰り返すことで必ず1が得られることが確かめられている。
たとえば、10から始めると
10→5→16→8→4→2→1
である。ただし、a→bは1回の操作で自然数aから自然数bが得られたことを意味する。
Nを2以上10の5乗以下の自然数とするとき、F(N)をNから始めて1が得られるまでの
上記の操作の回数と定義する。また、F(1)=0とおく。たとえば、上の例から、
F(10)=6である。
(1)F(6)=「ア」、F(11)=「イウ」である。
(2)10の5乗以下の自然数Nについて、F(N)を求めるため、次のような「プログラム」を作った。
ただし、INT(X)はXを超えない最大の整数を表す関数である。
「プログラム」
100 INPUT N
110 LET I=N
120 LET C=0
130 IF I=1 THEN GOTO 「エ」
140 IF INT(I/2)*2=I THEN
150 「オ」
160 GOTO 190
170 END IF
180 LET I=3*I+1
190 「カ」
200 「キ」
210 PRINT "F(";N;")=";C
220 END
■ このスレッドは過去ログ倉庫に格納されています