AIZU ONLINE JUDGE ITP1_3_Dをpythonで解いてみた

python

本サイトAIZU ONLINE JUDGE ITP1_3_D へはこちらから

目次

問題:約数の数

3つの整数 a、b、c を読み込み、a から b までの整数の中に、c の約数がいくつあるかを求めるプログラムを作成してください。

Input

a、b、c が1つの空白区切りで1行に与えられます。

Output

約数の数を1行に出力してください。

Constraints

  • 1 ≤ a,b,c ≤ 10000
  • a ≤ b

Sample Input

5 14 80

Sample Output

3

解答例

a, b, c = map(int, input().split())
cnt = 0
for i in range(a, b + 1):
    if c % i == 0:
        cnt += 1
print(cnt)

解説

以下のように解いていきます。

  1. 3つの整数の読み込み
  2. for文を使用し、a から b までの中でcの約数をカウントする
  3. cの約数を表示する

ここではmap関数を使用します。第二引数のinput().split()で空白区切りの文字列として取得した値を、一つずつint関数に当てはめて整数型に変換し、a、b、cに設定していきます。

# input().split()で空白区切りの文字列を取得 → intに変換 → a、b、c に設定
a, b, c = map(int, input().split())

※サイト内「AIZU ONLINE JUDGE ITP1_1_Cをpythonで解いてみた」の、map関数とはにmap関数の使用方法が書かれておりますのでぜひご覧ください。

まず、約数を記憶する変数cntを用意します。

続いて、for文のイテラブルオブジェクト(繰り返し可能なオブジェクト)にrange(a, b + 1)を設定し、a から b までループ処理を行います。
※b + 1とするのは、range(開始値, 終了値)を設定すると、終了値であるbは含まれないため。

そして、a から b までの中でcの約数がある(余りが0の)場合に、約数を記憶する変数cntに+1します。

# 約数を記憶する変数cntを用意
cnt = 0
# aからbまでfor文を回す
for i in range(a, b + 1):
    # cの約数(余りが0のもの)の場合
    if c % i == 0:
        # 約数を記憶する変数cntに+1する
        cnt += 1

※サイト内「AIZU ONLINE JUDGE ITP1_3_Bをpythonで解いてみた」の、range関数とはにrange関数の使用方法が書かれておりますのでぜひご覧ください。

for文終了後に、print文を使用し約数を記憶する変数cntを表示します。

# print関数でcの約数(cnt)を表示する
print(cnt)

※サイト内の「AIZU ONLINE JUDGE ITP1_1_Aをpythonで解いてみた」の、print関数とはにprint関数の使用方法が書かれておりますのでよかったらご覧ください。

最後に、もう一度プログラムを確認してみましょう。

# input().split()で空白区切りの文字列を取得 → intに変換 → a、b、c に設定
a, b, c = map(int, input().split())

# 約数を記憶する変数cntを用意
cnt = 0
# aからbまでfor文を回す
for i in range(a, b + 1):
    # cの約数(余りが0のもの)の場合
    if c % i == 0:
        # 約数を記憶する変数cntに+1する
        cnt += 1
# print関数でcの約数(cnt)を表示する
print(cnt)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

コメント

コメントする

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約が適用されます。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次