レッスン64
ほしいかずのたまごをかうさんすうのもんだい⌗
スーパーで、1はこに7こはいっているたまごと、1はこに11こはいっているたまごが、うられています。
7こいりのはこと、11こいりのはこを、いくつかかって、たまごをかいます。
たとえば、7こいりを1はこと、11こいりを2はこかうと、たまごを29こかうことができます。
もんだい1⌗
たまごを25こかいたいときは、7こいりのはこと、11こいりのはこを、なんこずつかえばいいですか?
もんだい2⌗
たまごを100こかいたいときは、7こいりのはこと、11こいりのはこを、なんこずつかえばいいですか?
もんだい3⌗
かうことができないかずには、8こや、12こなどがあります。
これらのかうことができないかずのうち、いちばんおおきいかずは、いくつでしょうか?
こたえは77よりちいさいです。
GoogleスプレッドシートかPythonをつかってさがしてみましょう。
やりかた
100いかの7のばいすうをすべてもとめる。(0もふくめる)
100いかの11のばいすうをすべてもとめる。(0もふくめる)
7のばいすうと11のばいすうを1つずつえらんでたす。
これをすべてのくみあわせでやる。
できあがったすべてのかずから100いかのかずをえらぶ。
100いかのかずのうち、これらのかずのなかにないかずのうちいちばんおおきいかずをさがす。
もんだい4⌗
なぜ、77よりおおきいかずは、すべてかうことができるのでしょうか?
まず、71から77は、かうことができるかしらべてみましょう。
それがもしできれば、それよりおおきいかずは、どんなかずでも、かうことができるといえます。
それはなぜでしょうか?
もんだい3のこたえ⌗
AIにつぎのようにおねがいして、プログラムをかいてもらいました。
つぎの処理を行うPythonのコードを書いて。
100以下の7の倍数をすべて求めてリストにする。ただし、0も含める。
100以下の11の倍数をすべて求めてリストにする。ただし、0も含める。
これらの2つのリストのすべての要素について、1つずつ数を取り出して足して数を作り、それをリストにする。
100以下の数のうち、そのリストに含まれない数のうち、最大の数を画面に表示する。
AIがかいてくれたプログラム
# 100以下の7の倍数をすべて求めてリストにする(0も含む)
multiples_of_7 = [i for i in range(101) if i % 7 == 0]
# 100以下の11の倍数をすべて求めてリストにする(0も含む)
multiples_of_11 = [i for i in range(101) if i % 11 == 0]
# これらの2つのリストのすべての要素について、1つずつ数を取り出して足して数を作り、それをリストにする
sum_list = []
for num7 in multiples_of_7:
for num11 in multiples_of_11:
sum_list.append(num7 + num11)
# 重複を削除し、昇順にソート(必須ではないが、後の処理や確認がしやすい)
sum_list = sorted(list(set(sum_list)))
# 100以下の数のうち、そのリストに含まれない数のうち、最大の数を探す
max_not_in_list = -1 # 該当する数がない場合の初期値
for i in range(100, -1, -1): # 100から0まで逆順に調べる
if i not in sum_list:
max_not_in_list = i
break # 最大の数が見つかったのでループを終了
# 結果を表示
print(f"7の倍数のリスト: {multiples_of_7}")
print(f"11の倍数のリスト: {multiples_of_11}")
print(f"足して作られた数のリスト: {sum_list}")
print(f"100以下の数のうち、足して作られた数のリストに含まれない最大の数: {max_not_in_list}")