【Python】ループを使わずにnの最初のm個の倍数を出力する方法
このチュートリアルでは、for文などのループ処理を使わずに、ある数値nの最初のm個の倍数を求めるプログラムを作成します。
例えば、n = 4、m = 3 の場合、出力は 4, 8, 12 となります。これは4の倍数を3つ並べたものです。この課題における最大のポイントは、「ループを使用しないこと」です。
range()関数とは
ループを使わずに目的の出力を得るには、Python標準のrange()関数が便利です。range()関数は「範囲オブジェクト(rangeオブジェクト)」を返し、これをリストなどに変換して利用できます。
構文
range(start, end, step)
- start: 数列の開始値
- end: 数列の終了値(※end自体は範囲に含まれません)
- step: 隣接する2つの数の差(省略可能。省略した場合は1として扱われます)
具体的な動作イメージは以下の通りです。
range(1, 10, 2) --> 1, 3, 5, 7, 9 range(1, 10) --> 1, 2, 3, 4, 5, 6, 7, 8, 9
range()の基本的な使い方
まずは簡単なサンプルコードでrange()の挙動を確認してみましょう。
サンプルコード
## start = 2, end = 10, step = 2 → 2, 4, 6, 8 を生成 evens = range(2, 10, 2) ## rangeオブジェクトをリストに変換して表示 print(list(evens)) ## start = 1, end = 10, step省略 → 1〜9 を生成 nums = range(1, 10) ## rangeオブジェクトをリストに変換して表示 print(list(nums))
実行結果
[2, 4, 6, 8] [1, 2, 3, 4, 5, 6, 7, 8, 9]
このように、range()は指定した条件に従って等差数列を自動的に生成してくれます。この性質を利用すれば、ループを書かなくても倍数を一括で取得できます。
nのm個の倍数を求めるアルゴリズム
それでは、本題のプログラムの手順を見ていきましょう。
- 数値 n と個数 m を初期化する
- nの倍数を返すrange()関数を用意する
- 開始値を n、終了値を (n × m) + 1、ステップを n に設定する
ステップをnにすることで、n, 2n, 3n…というようにnの倍数だけが順番に生成されます。また、終了値を (n × m) + 1 とすることで、ちょうどm個分の倍数が範囲内に収まります。
サンプルコード
## nとmを初期化 n = 4 m = 5 ## nの倍数を返すrange()関数 multiples = range(n, (n * m) + 1, n) ## rangeオブジェクトをリストに変換して表示 print(list(multiples))
実行結果
[4, 8, 12, 16, 20]
n = 4、m = 5 の場合、4の倍数が5つ(4, 8, 12, 16, 20)正しく出力されました。nとmの値を変更しても、同様に動作することを確認してみてください。
まとめ
今回は、range()関数の「開始値・終了値・ステップ」を工夫することで、ループ処理を一切使わずにnの最初のm個の倍数を取得する方法を解説しました。range()は単なる連番生成にとどまらず、ステップ指定を活用することでさまざまな場面で応用できる強力な組み込み関数です。
このチュートリアルが参考になれば幸いです。内容についてご不明な点や質問がある場合は、ぜひコメント欄でお知らせください。
-
【Python】ループを使わずに数列を出力する方法:再帰呼び出しを活用した実装
はじめに 本記事では、以下の問題に対する解決策について詳しく解説します。 問題の概要 2つの整数 N と K が与えられたとき、N が 0 より大きい間は N から K を引き続けます。そして N が 0 以下になったら、今度は元の値 N に戻るまで K を足していきます。 入力例 N = 10 K = 4 出力例 10 6 2 -2 2 6 10 アルゴリズムの考え方 N が 0 より大きい間、関数を再帰的に呼び出し続けます(各呼び出しごとに N から K を減算します)。 数値が 0 以下になったら、元の値に戻るまで各呼び出しごとに K を加算します。 加算と減算は同じ1つの関数
-
ループを使わずに数列を出力するPythonプログラム|再帰とフラグで実現する方法
本記事では、for文やwhile文などのループ構文を一切使わずに数列を表示するという問題の解法について解説します。問題の定義問題: 2つの数値 N と K が与えられます。まずNが0より大きい間はNからKを繰り返し引き、Nが0以下(ゼロまたは負)になったら、今度は逆にKを足していきます。そして値が元の数値Nに戻った時点で処理を終了します。実行例N = 10K = 4出力: 10 6 2 -2 2 6 10アルゴリズムNが0より大きい間、関数を再帰的に呼び出し続けます。各呼び出しのたびにNからKを減算します。数値が0以下になったら加算モードに切り替え、各呼び出しごとにKを加算します。元の数値Nに