C++で数値がリスト内のすべての数値で割り切れるかどうかを判定する方法
問題概要
この問題では、n個の数値からなるリストと、1つの数値が与えられます。私たちのタスクは、リスト内のすべての数値が指定された数値で割り切れるかどうかを判定することです。
具体的には、リストのすべての要素が与えられた数値(num)で割り切れるかどうかを確認します。
例で問題を理解しましょう
入力: list[] = [4, 10, 6, 5, 9]、num = 5
出力: No
説明:
要素 4、6、9 は 5 で割り切れません。
解決アプローチ
この問題を解くには、リストの各要素を順番に調べ、num で割り切れるかどうかを確認します。リスト内のすべての数値が num で割り切れる場合は true を返し、1つでも割り切れない要素が存在する場合は false を返します。
アルゴリズム
ステップ1: i を 0 から n までループします(n はリストの長さ)。
ステップ1.1: list[i] % num != 0 の場合、false を返します。
ステップ1.2: それ以外(list[i] % num == 0)の場合は、次の要素の確認へ続行します。
ステップ2: ループが最後まで完了したら、true を返します。
このアルゴリズムの計算量は O(n) であり、リストの長さに比例して処理時間が増加します。
ソリューションの動作を示すプログラム
例
#include <iostream>
using namespace std;
bool isListDivNum(int list[], int num, int size)
{
for (int i = 0; i < size; i++) {
if (list[i] % num != 0)
return false;
}
return true;
}
int main() {
int list[] = {762, 9, 123, 99};
int num = 3;
int size = (sizeof(list) / sizeof(list[0]));
if (isListDivNum(list, num, size))
cout<<"リストのすべての要素はその数値で割り切れます";
else
cout<<"リストのすべての要素はその数値で割り切れません";
return 0;
}出力 −
リストのすべての要素はその数値で割り切れます
コードの解説
このプログラムでは、isListDivNum 関数がリストの各要素を num で割った余りを確認します。余りが 0 でない要素が1つでも見つかれば即座に false を返し、すべての要素の余りが 0 であれば true を返します。
main 関数では、サンプルリスト {762, 9, 123, 99} と数値 3 を渡して判定を行っています。これらの要素はすべて 3 で割り切れるため、「リストのすべての要素はその数値で割り切れます」というメッセージが出力されます。
-
C++で数の奇数の約数(奇因子)の合計を求めるプログラム
正の整数が与えられたとき、その数の奇数の約数(奇因子)をすべて求め、それらの合計を計算するのが本プログラムの目的です。 例 入力: number = 20 出力: 奇数の約数の合計は: 6 入力: number = 18 出力: 奇数の約数の合計は: 13 例えば number = 20 の場合、約数は 1, 2, 4, 5, 10, 20 ですが、このうち奇数は 1 と 5 のみです。したがって、結果 = 1 + 5 = 6 となります。 プログラムで使用するアプローチ 奇数の約数の合計を計算する対象の数を入力する 偶数の約数を除外するため、まず数を2で割り切れる限り2で割り続け、奇数の部
-
数値を逆順に並べ替えるC++プログラムの書き方と解説
数値の反転とは、その桁の数字を逆の順序に並べ替えて格納することを指します。 例えば、元の数値が6529である場合、出力として9256が表示されます。 以下に、数値を反転させるC++プログラムの例を示します。 サンプルプログラム #include <iostream> using namespace std; int main() { int num = 63972, rev = 0; while(num > 0) { rev = rev*10 + num%10; num = num/10; } cout<