####10未満の自然数のうち、3もしくは5の倍数になっているものは3,5,6,9の4つがあり、これらの合計は23になる。
####同じようにして、1000未満の3か5の倍数みなっている数字の合計を求めよ。
とりあえず答えを出すまでの流れは
######1.1000未満の3と5の倍数を抜き出す
######2.抜き出したものを合計する
で、終わり
1問目だから難易度は控えめなはず
とりあえず1000未満の数を抜き出したいからrange関数を使えばうまくいくと思う
3と5の倍数はifを使って条件付ければ抜き出せそう
ということでプログラミングに起こしてみる
sanbai = 0
for sen in range(1000):
if sen % 3 == 0:
sanbai += sen
print(sanbai)
166833
これで1000未満の3の倍数の合計が求められたはず
同じことを5の倍数でもやってみる
gobai = 0
for sen_a in range(1000):
if sen_a % 5 == 0:
gobai += sen_a
print(gobai)
99500
これで5の倍数も抜き出した
ので、組み合わせてみる
sanbai = 0
gobai = 0
for sen_a in range(1000):
if sen_a % 3 == 0:
sanbai += sen_a
for sen_b in range(1000):
if sen_b % 5 == 0:
gobai += sen_b
print(gobai + sanbai)
266333
これで当っているのだろうか...
どうも違うらしい
[http://kingyojima.net/pje/001.html]
ここの回答によると答えは233168らしい
どこが違うのだろうか...
なるほど、
######3倍と5倍を抜き出すときにそれぞれ3で割れる数と5で割れる数を抜き出していたので、15とか30とかのそれぞれの倍数がかぶっている値が重複していたので答えが大きい数字になっていたみたい
なので5倍を抜き出す式に
for sen_b in range(1000):
if sen_b % 5 == 0 and sen_b % 3 != 0:
これでうまくいくはず
sanbai = 0
gobai = 0
for sen_a in range(1000):
if sen_a % 3 == 0:
sanbai += sen_a
for sen_b in range(1000):
if sen_b % 5 == 0 and sen_b % 3 != 0:
gobai += sen_b
print(gobai + sanbai)
233168
これで正解のはず
Problem2は**こちら**から