レッスン128
等しい5進数と7進数⌗
問題 1⌗
2けたの5進数の中でいちばん小さい数は何ですか。その数を5進数と10進数で答えてください。
解答と解説を見る
【解答】⌗
- 5進数: 10
- 10進数: 5
【解説】⌗
2けたの数で最も小さい数は、上の位(左の位)が「1」、下の位(右の位)が「0」となります。したがって、5進数では 10 です。これを10進数に直すと、1 * 5 + 0 = 5 となります。
問題 2⌗
2けたの7進数の中でいちばん小さい数は何ですか。その数を7進数と10進数で答えてください。
問題 3⌗
2けたの5進数の中でいちばん大きい数は何ですか。その数を5進数と10進数で答えてください。
解答と解説を見る
【解答】⌗
- 5進数: 44
- 10進数: 24
【解説】⌗
5進数で使える数字は 0, 1, 2, 3, 4 の5種類なので、各けたに入る一番大きな数字は「4」です。そのため、2けたで最大数は 44 となります。これを10進数に直すと、4 * 5 + 4 = 24 となります。
問題 4⌗
2けたの7進数の中でいちばん大きい数は何ですか。その数を7進数と10進数で答えてください。
解答と解説を見る
【解答】⌗
- 7進数: 66
- 10進数: 48
【解説】⌗
7進数で使える数字は 0, 1, 2, 3, 4, 5, 6 の7種類なので、各けたに入る一番大きな数字は「6」です。そのため、2けたで最大数は 66 となります。これを10進数に直すと、6 * 7 + 6 = 48 となります。
問題 5⌗
2けたの5進数の左の位に出てくる数字をすべて答えてください。
解答と解説を見る
【解答】⌗
1, 2, 3, 4
【解説】⌗
2けたの数にするため、左の位(5の位)に「0」を入れることはできません(01は1けたの「1」になってしまうため)。したがって、使われる数字は1から4の4つになります。
問題 6⌗
2けたの5進数の右の位に出てくる数字をすべて答えてください。
問題 7⌗
すべての2けたの5進数を画面に表示するPythonのプログラムを作ってください。
解答と解説を見る
【解答】⌗
for left in range(1, 5):
for right in range(0, 5):
print(f"{left}{right}")
【解説】⌗
- 左の位 (
left) は1, 2, 3, 4を取るためrange(1, 5) - 右の位 (
right) は0, 1, 2, 3, 4を取るためrange(0, 5) - 二重ループで組み合わせることで、10, 11, 12, … , 44 までのすべての2けたの5進数が表示されます。
問題 8⌗
5進数の34を10進数に変えてください。
問題 9⌗
7進数の34を10進数に変えてください。
問題 10⌗
ある2けたの5進数があります。
その数の左の位の数と右の位の数を入れ替えます。
例 34 -> 43
入れ替えた数を7進数だと考えて値を計算します。
例
34(5進数) = 3 * 5 + 4 = 15 + 4 = 19
43(7進数) = 4 * 7 + 3 = 28 + 3 = 31
この2つの数が等しくなる場合を答えてください。
解答と解説を見る
【解答】⌗
32 (10進数で表すと 17)
【解法1:数学的な解き方】⌗
元の2けたの5進数を ab とおきます。
- a (左の位):1, 2, 3, 4 のいずれか
- b (右の位):0, 1, 2, 3, 4 のいずれか
-
10進数の式に表す:
- 元の数 ab の値:5a + b
- 左右を入れ替えた数 ba の値:7b + a
-
2つの値が等しくなる方程式を立てる:
5a + b = 7b + a
4a = 6b
2a = 3b
-
範囲を満たす a, b を求める:
- a は 1, 2, 3, 4 のいずれかです。
- 2a = 3b より、a は3の倍数でなければならないため、a = 3 と定まります。
- a = 3 を代入すると 2 * 3 = 3b となり、b = 2 と求まります。
-
確かめ:
- 元の数:32 = 3 * 5 + 2 = 17
- 入れ替えた数:23 = 2 * 7 + 3 = 17
どちらも値が「17」で等しくなるため、求める2けたの5進数は 32 となります。
【解法2:Pythonを使ったプログラムによる解き方(全探索)】⌗
# 2けたの5進数を全探索する
for a in range(1, 5): # 左の位 (1, 2, 3, 4)
for b in range(0, 5): # 右の位 (0, 1, 2, 3, 4)
# 元の数: ab(5進数) を10進数に変換
val_base5 = a * 5 + b
# 入れ替えた数: ba(7進数) を10進数に変換
val_base7 = b * 7 + a
# 2つの値が等しいかチェック
if val_base5 == val_base7:
print(f"元の5進数: {a}{b}(5)")
print(f"入れ替えた7進数: {b}{a}(7)")
print(f"10進数の値: {val_base5}")
実行結果:
元の5進数: 32(5)
入れ替えた7進数: 23(7)
10進数の値: 17