Pythonで数の約数(因数)を見つける方法をわかりやすく解説
基本的な考え方
ある数の約数(因数)を見つけるには、1からその数自身までのすべての整数に対して、割り切れるかどうかを順番に確認するループを実行します。Pythonの剰余演算子「%」を使い、割った余りが0になれば、その数は約数であると判断できます。
サンプルコード
num = int(input("enter a number"))
factors = []
for i in range(1, num + 1):
if num % i == 0:
factors.append(i)
print("Factors of {} = {}".format(num, factors))このコードでは、変数 i が num を完全に割り切れた場合(余りが0の場合)に、その値をリストへ追加していきます。ループがすべて完了した後、蓄積されたリストの内容が、入力された数の約数一覧として出力されます。
実行結果
enter a number75 Factors of 75 = [1, 3, 5, 15, 25, 75]
75の場合、「1・3・5・15・25・75」の6つが約数として正しく表示されています。なお、どのような正の整数でも必ず1とその数自身は約数になるため、リストの先頭と末尾には必ずこれらの値が含まれます。
より効率的な方法:平方根まで調べる
上記の方法はシンプルで理解しやすい反面、数が大きくなると処理に時間がかかります。約数はペア(例:75なら「3と25」「5と15」)で現れる性質を利用すると、平方根まで確認すれば十分であり、計算量を大幅に削減できます。
import math
num = int(input("enter a number"))
factors = set()
for i in range(1, math.isqrt(num) + 1):
if num % i == 0:
factors.add(i)
factors.add(num // i)
print("Factors of {} = {}".format(num, sorted(factors)))この方法では、小さい方の約数 i が見つかった時点で、ペアとなる大きい方の約数 num // i も同時に追加します。重複を避けるために集合(set)を使用し、最後にソートして出力しています。
まとめ
- 約数の判定には剰余演算子「
%」を使用し、余りが0かどうかを確認する。 - シンプルな全探索(1〜N)でも問題ないが、大きな数には平方根までの探索が有効。
- 負の数や0の扱いが必要な場合は、入力値のチェックを追加するとより堅牢なコードになります。
-
Pythonで数の奇数の約数(奇因子)の合計を求めるプログラム
この記事では、「整数 n が与えられたとき、その数の奇数の約数(奇因子)の合計を求める」という問題の解き方を解説します。 問題文 整数 n が入力として与えられます。求めるのは、n の奇数の約数をすべて足し合わせた値です。 例えば n = 27 の場合、約数は 1, 3, 9, 27 のすべてが奇数であるため、合計は 1 + 3 + 9 + 27 = 40 となります。 アプローチのポイント この問題で最初に行うべきは、偶数の約数をすべて除外することです。 偶数の約数を取り除くには、n が 2 で割り切れなくなるまで繰り返し 2 で割ります。この操作によって n から 2 の因数が完全に
-
Pythonで数の偶数の約数の合計を求めるプログラムの実装方法
本記事では、以下の問題文に対する解決策について学びます。問題文整数 n が与えられたとき、その数の偶数の約数(偶因子)の合計を求めることが課題です。この問題を解くには、まず奇数の約数をすべて除外する必要があります。入力された数が奇数の場合、偶数の約数は一つも存在しないため、直接 0 を返します。そうでない場合は、以下のコードで示すアプローチに従います。アルゴリズムの考え方このアプローチでは素因数分解を活用します。約数の合計は「各素因数の冪乗の和の積」として表せるという性質を利用します。偶数の約数のみを対象とするため、素因数 2 の部分については 20(つまり 1)を除外し、21 以降の項だけを