はじめに
小樽商科大学の入試問題にプログラミング題材にふさわしい問題があったので、pythonでプログラミングしました。
問題
2010!は2で何回割り切れるか。
出典 2010年小樽商科大学
プログラミングしたコード
# 小樽商科大2010年の入試問題
# 2010!は2で何回割り切れるか
# 2で割り切れるだけ割り切り、割り切った回数を返す関数
def two_div(num):
two_div_count = 0
while num % 2 == 0:
two_div_count += 1
num /= 2
return two_div_count
# メイン関数
def main():
# 階乗を表す変数
N = 2010
# 解答を表す変数
two_div_ans = 0
for i in range(1,N+1):
ans += two_div(i)
print(two_div_ans)
if __name__ == "__main__":
main()
実行結果
実行結果はこんな感じ
アルゴリズム
①自然数を2で割り切れるか変数に入れる
②2で割り切れるか変数に格納した自然数を2で割り切れなくなるまで繰り返し2で割る
③②の処理の結果回数を足す
④自然数を1足して①に戻る。2010まで繰り返す。
⑤2010まで調査したら、2で割り切れる回数を標準出力に出力
最後に
機会があったら何かの題材で挑戦しようと思います。