指定した範囲内で3と5の両方で割り切れる数をすべて出力するPythonプログラム
本記事では、与えられた整数Nの範囲内から、3と5の両方で割り切れる数をすべて出力するPythonプログラムを解説します。実装方法はいくつかありますが、どの方法でも共通して必要になるのが「その数が3と5の両方で完全に割り切れるかどうか」を判定する処理です。
3と5で割り切れる数を出力する基本コード
以下が、指定した範囲内で3と5の両方で割り切れる数をすべて出力するPythonコードです。
lower = int(input("下限を入力してください:"))
upper = int(input("上限を入力してください:"))
for i in range(lower, upper+1):
if((i%3==0) & (i%5==0)):
print(i)
実行結果
下限を入力してください:0 上限を入力してください:99 0 15 30 45 60 75 90
上記の例では、0から99までの範囲に含まれる、3と5の両方で割り切れる数(つまり15の倍数)を出力しています。剰余演算子%を使い、i%3==0とi%5==0が同時に成り立つかどうかを条件分岐で確認している点がポイントです。
範囲を変えて応用する
同じプログラムでも、入力する範囲を変えるだけで応用できます。たとえば、0から1000までの間で3と5の両方で割り切れる数を出力したい場合は、範囲を変更するだけで次のような結果になります。
下限を入力してください:0 上限を入力してください:1000 0 15 30 45 60 75 90 105 120 135 150 165 180 195 .... .... 915 930 945 960 975 990
任意の数で割り切れる数を出力する汎用版
固定の数(3と5)ではなく、ユーザーが指定した任意の数で割り切れる数を出力したい場合は、プログラムを次のように書き換えます。
# 範囲内で指定した任意の数で割り切れる数をすべて出力する場合
n = int(input("割り切れるか確認する数を入力してください:"))
for i in range(lower, upper+1):
if(i%n==0):
print(i)
このように、割る数を変数nとして外部から受け取ることで、どんな数にも対応できる柔軟なプログラムになります。
プログラムの処理手順
上記コードの流れを整理すると、以下の手順になっています。
ユーザーから下限と上限、つまり範囲を入力として受け取ります。
割り算の判定に使う数をユーザーから受け取ります。今回のメインの問題では、対象が3と5であることが分かっているため、if文に直接「3」と「5」を記述しています。
ループの中で
&(and)演算子を使った条件式により、3と5の両方で割り切れる数だけを出力します。これにより、範囲内の該当するすべての数(15の倍数)が表示されます。処理を終了します。
補足:より読みやすい書き方
なお、複数条件の組み合わせには論理演算子andを使うこともできます。(i%3==0) and (i%5==0)と書いたほうが意図が明確になり、可読性の面で推奨されるスタイルです。また、3と5の両方で割り切れる数は必ず15の倍数になるため、i%15==0というシンプルな条件で判定する方法もあります。目的や可読性に応じて使い分けるとよいでしょう。
-
指定した範囲内で奇数個の約数を持つ要素の個数を求めるPythonプログラム
本記事では、以下の問題文に対する解決策について詳しく解説します。 問題文 問題 − ある範囲 [n, m] が与えられたとき、その範囲内に存在する「奇数個の約数を持つ数」の個数を求めます。 アプローチ まず押さえておきたい重要な性質として、「完全平方数だけが奇数個の約数を持つ」ということが挙げられます。これは、約数が通常ペア(d と n/d)で現れるのに対し、完全平方数の場合は平方根に相当する約数だけがペアにならず単独で存在するためです。 したがって、この問題は「指定された範囲内に含まれる完全平方数の個数を数える」ことに帰着できます。 なお、n と m はどちらも範囲に含まれるため、境界値での
-
Pythonで与えられた数の素因数をすべて効率的に出力するプログラムの作成方法
本記事では、与えられた整数の素因数(そいんすう)をすべて効率的に求めて出力するPythonプログラムについて詳しく解説します。 問題文 ある整数 n が与えられたとき、その数を構成するすべての素因数を見つけて出力することです。 例えば 200 の場合、200 = 2 × 2 × 2 × 5 × 5 と分解できるため、出力は「2, 2, 2, 5, 5」となります。 効率的なアプローチとは 2からnまですべての数で割り切れるかを順番に確認する素朴な方法では、計算量が O(n) かかり非効率です。そこで、次の3つの性質を利用することで、計算量を O(√n) まで削減できます。 まず2で割れるだけ