◎レベル 5.
def torikae(a,b,n) r=n% 2 ### r は c を 2で割った余り if (r== 0 ) a1=a else a1=a*b end b1=b^2 n1=n/2 return([a1,b1,n1]) end
上のように(正しく)入力した後、
torikae(1,2,5)
を実行すると、何が得られるか?
◎ 利用例(レベル6)(レベル5の続きに書く。)
a,b,n=1,5,1000 while n>=1 a,b,n=torikae(a,b,n) ## このように変数をいっぺんに代入できる。 end
○ 一般に正の数 を レベル4のtorikae(a,b,n) で取り替えちゃった後でも の値は 変わらないことを納得せよ。(納得するだけでいい。)その後、 上のプログラムをうまく変えて を求めるプログラムを作れ。
◎最終問題 (レベル7): のとき、 を で割ったあまりを求めよ。
ヒント: レベル5のプログラムの計算のいくつかのステップで、 を それぞれ , で置き換えて扱う数を あまり大きくならないようにせよ:
なお、積ではなく和や差でも同様のことが成り立つ。
○付記:
ruby では、
は
を「あまりを許した割り算」で
で割った商(つまり33)
を指すのが標準の動作であるが、場合によっては
(プログラム側で動作を指定することにより)
を分数(
と等しいアレ)と認識する場合もある。
そのような場合、上で10/3, n/2 などとある部分は、
それぞれ10.div(3), n.div(2)
などと書いてやるとよい。