C++で数値の約数(因数)をすべて表示するプログラムの解説
因数(約数)とは、ある数を掛け合わせて作ることができる数のことです。
例えば、5 × 3 = 15 となるため、5 と 3 は 15 の因数です。同様に、15 × 1 = 15 となるため、1 と 15 も 15 の因数に含まれます。
この記事では、指定した数値の因数をすべて表示する C++ プログラムを紹介します。
例:基本的な実装
#include<iostream>
using namespace std;
int main() {
int num = 20, i;
cout << "The factors of " << num << " are : ";
for(i=1; i <= num; i++) {
if (num % i == 0)
cout << i << " ";
}
return 0;
}出力結果
The factors of 20 are : 1 2 4 5 10 20
プログラムの仕組み
このプログラムでは、for ループが 1 から num まで繰り返し処理を行います。ループ内で num を i で割り、余りが 0 になった場合、i は num の因数であると判断され、画面に出力されます。
for(i=1; i <= num; i++) {
if (num % i == 0)
cout << i << " ";
}剰余演算子(%)を使うことで、「割り切れるかどうか」を簡単に判定できるのがポイントです。20 の場合、1・2・4・5・10・20 の 6 つの数で割り切れるため、これらがすべて因数として表示されます。
関数を使った実装方法
上記と同じ処理は、因数を計算する専用の関数を作成することでも実現できます。コードの再利用性や可読性が向上するため、規模の大きなプログラムではこちらの書き方が推奨されます。
例:関数を使用したバージョン
#include<iostream>
using namespace std;
void factors(int num) {
int i;
for(i=1; i <= num; i++) {
if (num % i == 0)
cout << i << " ";
}
}
int main() {
int num = 25;
cout << "The factors of " << num << " are : ";
factors(num);
return 0;
}出力結果
The factors of 25 are : 1 5 25
関数版プログラムの解説
上記のプログラムでは、factors() 関数が「num」のすべての因数を求める役割を担っています。main() 関数から引数「num」を 1 つ渡して呼び出す構成です。
factors(num);
factors() 関数内の for ループも同様に、1 から num まで処理を繰り返します。num を i で割った余りが 0 であれば、i は「num」の因数として出力されます。
for(i=1; i <= num; i++) {
if (num % i == 0)
cout << i << " ";
}まとめ
数値の因数を求める基本的な考え方は、「1 からその数自身まで順番に割ってみて、余りが 0 になる数を探す」ことです。今回紹介した 2 つの方法はどちらもシンプルですが、大きな数を扱う場合は処理速度を考慮し、平方根まで調べるなどの最適化を行うことも可能です。
-
【C++】中心付き九角数とその数列を生成するプログラムの書き方
はじめに整数「n」が与えられたとき、n 番目の中心付き九角数(centered nonagonal number)を求めるとともに、n 項目までの中心付き九角数列を生成して結果を表示するのが本記事の課題です。中心付き九角数とは?中心付き九角数とは、中央に置かれた1個の点を中心として、その周囲に点で描かれる九角形の層が幾重にも積み重なって構成される数です。上図は中心付き九角数 𝑁₂ を表したものです。この値は次の式を使って計算できます。$$Nc(n)=\frac{(3n-2)(3n-1)}{2}$$例えば n = 2 の場合、(3×2−2)×(3×2−1)/2 = 4×5/2 = 10 となり
-
C++で数の奇数の約数(奇因子)の合計を求めるプログラム
正の整数が与えられたとき、その数の奇数の約数(奇因子)をすべて求め、それらの合計を計算するのが本プログラムの目的です。 例 入力: number = 20 出力: 奇数の約数の合計は: 6 入力: number = 18 出力: 奇数の約数の合計は: 13 例えば number = 20 の場合、約数は 1, 2, 4, 5, 10, 20 ですが、このうち奇数は 1 と 5 のみです。したがって、結果 = 1 + 5 = 6 となります。 プログラムで使用するアプローチ 奇数の約数の合計を計算する対象の数を入力する 偶数の約数を除外するため、まず数を2で割り切れる限り2で割り続け、奇数の部