C言語で数の最大の素因数を求めるプログラム
素因数とは
素因数(そいんすう)とは、ある正の整数を余りなく割り切ることができる素数のことです。これらの数を見つける作業は「整数の因数分解」または「素因数分解」と呼ばれます。
例:288 の素因数は次のとおりです。
288 = 2 × 2 × 2 × 2 × 2 × 3 × 3
入力:n = 124 出力:31 が最大の素因数です!
アルゴリズムの考え方
まず、対象となる数のすべての素因数を求め、その中で最も大きいものを出力します。たとえば 124 を素因数分解すると、124 = 2 × 2 × 31 となり、この中で最大の素因数は 31 です。
具体的な手順は以下のとおりです。
- 2 から順に割る数(div)を用意し、n を割り切れるかどうかを判定します。
- 割り切れない場合は div を 1 ずつ増やします。
- 割り切れた場合は、そのときの n を最大の素因数候補(maxFact)として記録し、n を div で割ります。
- n が 1 になった時点で、記録しておいた値が最大の素因数となるため、結果を出力して処理を終了します。
C言語による実装例
#include <stdio.h>
int main() {
long int n;
n = 3453;
long int div = 2, ans = 0, maxFact;
while(n != 0) {
if(n % div != 0)
div = div + 1;
else {
maxFact = n;
n = n / div;
if(n == 1) {
printf("%d is the largest prime factor !", maxFact);
ans = 1;
break;
}
}
}
return 0;
}実行結果
1151 is the largest prime factor !
この例では 3453 = 3 × 1151 と素因数分解できるため、最大の素因数である 1151 が出力されます。このアルゴリズムは小さい素数から順に割っていくことで、最後に残った商が必ず最大の素因数になるという性質を利用しています。
-
Pythonでリスト内の最大値を見つける方法をわかりやすく解説
この記事では、Pythonを使ってリストの中から最大の要素(最大値)を見つける方法について解説します。初心者の方でも理解しやすいよう、複数のアプローチをコード例とともに紹介していきます。 問題の概要 問題文: 与えられたリストの中から、最も大きい要素を求めて出力してください。 Pythonには便利な組み込み関数が用意されているため、これらを活用することで短いコードで効率的に問題を解決できます。ここでは主に sort() メソッドと max() 関数の2つの方法を取り上げます。 方法1:sort() 関数を使う sort() メソッドはリストを昇順に並べ替えます。並べ替え後のリストの末尾(インデ
-
【Python】ある数の最大の素因数を求めるプログラムの書き方
この記事では、「与えられた整数の最大の素因数を求める」という問題に対する解決方法を、具体的なコード例とともにわかりやすく解説します。 問題文 正の整数 n が与えられたとき、その数の最大の素因数を求めます。 例えば n = 15 の場合、15 は 3 × 5 と素因数分解できるため、答えは 5 となります。 解き方のアプローチ 入力された数を、小さい約数から順番に割っていくことで素因数分解します。 割り切れるたびに、その時点での約数(素因数)を「最大値」として更新していきます。 平方根まで調べれば十分なため、計算量を抑えられます。 実装例(サンプルコード) import math def