【C言語】入力した2つの数が過剰数(友好的なペア)かどうかを判定するプログラム
本記事では、ユーザーがコンソールから入力した2つの数値が「過剰数(友好的なペア)」に該当するかどうかを判定するCプログラムを紹介します。
判定条件とは?
ある数の約数(その数自身を除く)をすべて足し合わせた合計が、元の数と等しいとき、その数は特別な性質を持つ数とみなされます。具体的には、次のように定義できます。
- 数1のすべての約数の合計 = 数1
- 数2のすべての約数の合計 = 数2
上記の両方が成り立つ場合、この2つの数は「過剰数のペア(友好的なペア)」であると判定されます。ちなみに、約数の合計が自分自身と一致する数は数学的には完全数として知られており、代表的な例が 6(= 1+2+3)や 28(= 1+2+4+7+14)です。
判定ロジックの解説
1. 数1の約数の合計を求める
1から number1 の手前までの整数で順番に割り切れるかを確認し、割り切れた値を result1 に加算していきます。
for(i=1;i<number1;i++){
if(number1 % i == 0){
result1 = result1 + i;
}
}2. 数2の約数の合計を求める
同様の手順で、number2 の約数の合計を result2 に計算します。
for(i=1;i<number2;i++){
if(number2 % i == 0){
result2 = result2 + i;
}
}3. ペアであるかを判定する
最後に、それぞれの合計が元の数と一致しているかを条件式で確認します。
if(result1==number1 && result2==number2)この条件が満たされれば「過剰数のペア」、満たされなければ「過剰数のペアではない」と出力します。
完全なCプログラム
以下が、入力された2つの数値が過剰数のペアかどうかを判定するCプログラムの全コードです。
#include<stdio.h>
int main(){
int number1,number2,i;
printf("Enter two numbers:");
scanf("%d%d",&number1,&number2);
int result1=0,result2=0;
for(i=1;i<number1;i++){
if(number1 % i == 0){
result1 = result1 + i;
}
}
for(i=1;i<number2;i++){
if(number2 % i == 0){
result2 = result2 + i;
}
}
if(result1==number1 && result2==number2)
printf("Abundant Pairs");
else
printf("Not abundant Pairs");
return 0;
}実行結果
実際に 6 と 28 を入力して実行すると、次のような出力が得られます。
Enter two numbers:6 28
Abundant Pairs6 と 28 はどちらも約数の合計が自身と等しいため、「Abundant Pairs(過剰数のペア)」と判定されています。このように、ループによる約数の列挙と条件分岐を組み合わせるだけで、簡単にペア判定を実装できるのがポイントです。
-
Cプログラムを機械語に変換する4つのステップを徹底解説
プログラムの作成と実行の流れプログラムとは、プログラミング言語で記述された一連の命令の集まりです。プログラマーの仕事は、プログラムを作成し、その動作を確認することです。Cプログラムを機械語に変換して実行可能な形にするまでには、次の4つのステップが必要です。プログラムの作成と編集プログラムのコンパイルプログラムのリンクプログラムの実行1. プログラムの作成と編集プログラムの作成には「テキストエディタ」を使用します。テキストエディタを使えば、文字データの入力・修正・保存が自由に行えます。多くの場合、コンパイラには専用のテキストエディタが付属しています。プログラムを書き終えたら、ファイルとしてディス
-
C言語で点がX軸またはY軸に平行かどうかを判定するプログラム
グラフ上に与えられた n 個の点について、その点群がX軸に平行なのか、Y軸に平行なのか、それともどちらの軸にも平行でないのかを判定する方法を解説します。グラフとは、直角に交わる2つの軸に沿って測定した2つの変数の関係を表す図のことです。「平行」とは、線と線の間隔がどこでも等しい状態を指し、鉄道の線路のように、2本の線がすべての地点で同じ距離を保っている関係をいいます。 つまりここで求めたいのは、「各点の座標と軸との位置関係がすべての点で揃っているかどうか」、すなわち点群がX軸またはY軸に対して平行に並んでいるかどうかという判定です。 軸とは何か グラフはX軸とY軸という2つの軸によって構成さ