Pythonで整数の最小の約数を求めるプログラムの書き方
整数の最小の約数(最小の除数)を求めたい場合、シンプルな「for」ループを使うことで実現できます。この記事では、ユーザーから入力された整数の最小の約数を求めるPythonプログラムを、サンプルコードとともにわかりやすく解説します。
サンプルコード
以下が、整数の最小の約数を求めるプログラムの例です。
first_num = int(input("Enter a number..."))
my_list = []
print("The number is ")
print(first_num)
for i in range(2, first_num + 1):
if(first_num % i == 0):
my_list.append(i)
my_list.sort()
print("The smallest divisor is : ")
print(my_list[0])
実行結果
Enter a number...56 The number is 56 The smallest divisor is : 2
コードの解説
まず、
input()関数を使ってユーザーから数値を入力として受け取ります。int()で文字列を整数に変換しています。次に、約数を格納するための空のリスト
my_listを定義します。入力された数値をコンソールに表示します。
range(2, first_num + 1)により、2から入力値までの範囲を順番に反復処理します。1を除外しているのは、すべての整数が1で割り切れるためです。剰余演算子「%」を使い、入力した数値を現在の反復値(i)で割った余りが0かどうかを判定します。余りが0であれば、その値は約数です。
割り切れた場合(つまり約数だった場合)、その値をリストに追加(append)します。
ループ終了後、リストを
sort()メソッドで昇順に並べ替えます。最後に、並べ替えたリストの最初の要素(インデックス0)を表示します。これが最小の約数となります。
補足:より効率的な方法
上記のコードは理解しやすい反面、大きな数値に対してはすべての候補を調べるためやや非効率です。実際には、リストを作成せずに最初に見つかった約数を即座に返す方法が効率的です。以下のように書き換えることができます。
first_num = int(input("Enter a number..."))
for i in range(2, first_num + 1):
if(first_num % i == 0):
print("The smallest divisor is : ", i)
break
この方法では、2から順に確認していき、最初に割り切れた時点で break によってループを抜けるため、処理速度が向上します。なお、2以上の整数の場合、最小の約数は必ず素数になるという性質もあります。
-
Pythonで配列の合計を求める方法を徹底解説
この記事では、Pythonを使って配列(リスト)の合計を求める方法について詳しく解説します。 問題文 問題: 配列が与えられたとき、その配列に含まれるすべての要素の合計を計算してください。 最も基本的なアプローチは、配列全体を走査し、各インデックスの要素を順番に加算していく方法です。ここでは、まず組み込み関数を活用したシンプルな実装例を見ていきましょう。 方法1:組み込み関数 sum() を使う Pythonには、イテラブルなオブジェクトの合計を一発で計算できる組み込み関数 sum() が用意されています。これを使えば、コードは非常に簡潔になります。 サンプルコード # 合計を求める関数 de
-
Pythonでリスト内の最小値を見つける方法を解説
この記事では、リストの中から最小の数値を見つける方法について、具体的なサンプルコードとともに詳しく解説します。問題の概要問題: 数値のリストが与えられたとき、その中に含まれる最も小さい数値を画面に表示すること。この問題を解くアプローチは主に2つあります。ひとつは sort() メソッドを使ってリストを昇順に並べ替え、先頭の要素(インデックス0)を取得する方法。もうひとつは、Pythonに標準で用意されている組み込み関数 min() を使う方法です。それぞれ順番に見ていきましょう。方法1:sort()メソッドで並べ替えて最小値を取得するまずはリストを昇順にソートし、先頭の要素を取り出す方法です。