◆広島県 清川 育男さんからの解答。
【問題1】
自然数の最初の数1になることが予想されます。
答え 1
【問題2】
1) 6÷3=2。2+1=3。3÷3=1
2) 8+1=9。9÷3=3。3÷3=1
3)27÷3=9。9÷3=3。3÷3=1
答え 6,8,27
【問題3】
1のとき 0回。
2のとき 2+1=3。3÷3=1。2回
Nを3以上の自然数とする。
N÷3を考える。
【問題4】
一般式で表わすのは難しいようです。
数列サイトのデータベースにありません。
| 回数 | 1 | 2 | 3 | 4 | 5 | ・・・ | N |
| 数 | 3 | 9 | 27 | 81 | 243 | ・・・ | 3N |
任意の数を3進法で表わす。
1)2=2
>>> 2
3=1×31
>>> 10
3は1回で1にすることが出来る。
10
−) 2
――――――――
1
求める回数 1+1=2。
2)100=1×34+2×32+1
>>> 10201
243=1×35
>>> 100000
243は5回で1にすることが出来る。
100000
−) 10201
――――――――
12022
各桁の和に5を加えることで求められることが出来る。
5+1+2+2+2=12。
上記のように3進法で表わしそれより大きい3N(最小のN)から引き算をして、その各桁の和にNを加えることで求めることが出来る。
以上です。
しかし、これでは実際に操作して求めるのと余り変わりありませんね。
大きな数になると計算間違いの可能性は少なくなると思います。
【コメント】
【問題1,2】はご指摘の通りです。
【問題3】は最小となる数をPとするところが少し問題かもしれません。
ただ自然数が限りなく小さくなることはないので、明らかですか。
【問題4】は面白いですね。
証明はどうすればよいのでしょう。
◆神奈川県 今村 義彦さんからの解答。
問題[1]から[3]は省略する。
問題[4]の答案:
一般式であらわすことを試みる。
1) N = 1
0 times
2) N = 2
(2 + 1)/3 ; 2 times
3) N = 3
3/3 ; 1 times
4) N = 4
((4 + 1 + 1)/3 + 1)/3 ; 5 times
5) N = 5
((5 + 1)/3 + 1)/3 ; 4 times
6) N = 6
(6/3 + 1)/3 ; 3 times
7) ここで、Nをk桁の3進数の一般式で表現すると、
| N = | k-1 Σ j = 0 | a(j)×3j |
となる。但し、a(j)は3進数表現における数値表記係数とする。
例えば10進数表現の197は21022と表記するものとする。
(34 * 2 +33 * 1 + 31 * 2 + 2)
この場合、各係数はa(4)=2, a(3)=1, a(2)=0, a(1)=2, a(0)=2ということになる。
3で割り切れるとは、3進数表記でa(0)==0のことを表し、割り切れない場合に1を加えるとは
a(0)==1, あるいは2の場合である。
そして、a(0)が0になるまでa(0)に1を加え続けて、a(1)に桁上げを行なう。
上記の例でいうと、21022から21100に変換する作業である。
さて、一旦a(0)が0であれば、3で割り始める。
3進数表記上で右シフトすることを表す。
例題では、21100から211に変換する作業である。
以上の操作を1になるまで繰り返す。
つまり、211 -> 212 -> 220 -> 22 -> 100 -> 10 -> 1
以上のことから、次のことが言える。
つまり、割算(除算)は3進数表現での桁数分実行し、また、足し算(加算)は、各桁の3の補数の係数の和に1を加えたものとなる。
Nの補数を
| k-1 Σ j = 0 | b(j)×3j..... (1) |
とすると、加算の回数は
| k-1 Σ j = 0 | b(j)+ 1 ..... (2) |
となる。但し、b(j)は3進数表記の2の補数である。
例題では、21022に対して、5桁であるから除算を5回、2の補数は01200であるから加算を(1+2+1)4回実行する。
以下、順次説明する。
まず、加算の回数であるが、自然数Nに対して3進数表記の最高位(msb)のみを1とするような数にすることが第一の目的である。
この操作をわかりやすくするために、次のようにNを表す。
| N = 1×3k - | k-1 Σ j = 0 | b(j)×3j −1....(3) |
これを例題に当てはめると、
21022 = 100000 - 1200 - 1
となる。(1)式からほぼ自明であるが、
Nが1×3k- 1と表される以外は(3)式が成立するので、以下の操作で最終的に1に変換することができる。
初回に1を加える。
その後、毎回の操作においてNの最下位lsb(N(0))に1をb(j)回加えることによって0となる。
b(j)が0の場合は加えることなく、3で割る。(右シフトをおこなう。)
最終的に1が導かれる。
答え:
| 加算を | k-1 Σ j = 0 | b(j)+ 1 回 |
但し、b(j)はNの3進数表現の3の補数表記の各係数。
kは3進数表現時の桁数。