C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++を使用してモジュラ方程式の解の数を見つける


この記事では、モジュラ方程式の解についてすべてを説明します。また、モジュラ方程式の解を見つけるためのプログラムを作成します。これが基本的な例です-

Input : X = 30 Y = 2
Output : 4, 7, 14, 28
Explanation : 30 mod 4 = 2 (equals Y),
   30 mod 7 = 2 (equals Y),
   30 mod 14 = 2 (equals Y),
   30 mod 28 = 2 (equals Y)
Input : X = 30 Y = 2
Output : 4, 7, 14, 28
Explanation : 30 mod 4 = 2 (equals Y),
   30 mod 7 = 2 (equals Y),
   30 mod 14 = 2 (equals Y),
   30 mod 28 = 2 (equals Y)

上記の例でわかるように、すべての整数は、Xを除算すると余りYを与える解です。この例では、30を4、7、14、28で割ると、Yに等しい余り2が得られます。この方法でのモジュラス方程式。

解決策を見つけるためのアプローチ

Xを1から始まる各整数で除算し、余りYが得られるかどうかを確認する単純なアプローチを適用できます。または、(X-Y)を除算するがXは解かない各整数と整数で(X-Y)を除算することもできます。 。モジュラ方程式の別の解を見つけるためにC++プログラムを書いてみましょう。

#include <bits/stdc++.h>
using namespace std;
int numberofdivisor(int X, int Y){
    int N = (X - Y);
    int noOfDivisors = 1;
    for (int i = 1; i <= N/2; i++) {
        // if N is divisible by i
        if ((N % i) == 0) {
            // count if integer is greater than Y
            if (i > Y)
                noOfDivisors++;
        }
    }
    return noOfDivisors;
}
void numberofsolutions(int X, int Y){
    int noOfSolutions;
    if (X == Y)
        noOfSolutions = -1;
    if (X < Y)
        noOfSolutions = 0;
    if (X > Y)
        noOfSolutions = numberofdivisor(X, Y);
        if (noOfSolutions == -1) {
            cout << "X can take Infinitely many values"
            " greater than " << X << "\n";
    }
    else {
        cout << "Number of solution = " << noOfSolutions;
    }
}
// main function
int main(){
    int X,Y;
        cin >> X;
        cin >> Y;
    numberofsolutions(X, Y);
    return 0;
}

出力

入力として0を書き込むと、プログラムは次のような出力を返します-

X can take Infinitely many values greater than 0

他の数値を入力すると、上記のプログラムは次のような出力を表示します(ここでは入力として5を提供しました)-

Number of solution = 2

上記のコードの説明

次に、プログラムを簡単に理解できるように、各機能について説明します。

main()関数

main関数では、XとYの値を入力として受け取り、numberofsolutions()関数を呼び出して可能な解の数を見つけています。

Numberofsolutions()関数

この関数は、XとYが条件を満たしているかどうかをチェックします。この条件では、被除数よりも大きい余りが見つからないため、XはYよりも大きくなければなりません。この関数は別の関数numberofdivisor()を呼び出し、Xの約数の数をフェッチして、余りYを返します。

Numberofdivisor()関数

この関数は、1から(X-Y)/ 2までのループを実行し、すべての整数が除算されるかどうかをチェックすることにより、X-Yの約数の数を検出します。この整数は、Xを完全に除算するべきではありません。

結論

モジュラ方程式の解は、Xを除算して余りYを与える整数です。これはさまざまな例から理解できます。方程式にはいくつかの解が含まれる可能性があるため、単純なアプローチを適用することでこれらの解を見つけます。

モジュラ方程式の解を計算するC++プログラムを作成できます。同じプログラムを、C、Java、Python、またはその他のプログラミング言語などの他の言語で作成できます。この記事が、モジュラ方程式の多くの解を見つける方法の概念を理解するのに役立つことを願っています。


  1. C++を使用して停止ステーションの数を見つける

    ポイントXとYの間にn個の中間駅があります。2つの駅が隣接しないように、s駅に停車するように列車を配置できるさまざまな方法の数を数えます。そのため、この記事では、停車駅の数を見つけるためのあらゆる可能なアプローチについて説明します。問題を見ると、sの駅数で列車を止めることができる組み合わせを見つける必要があることがわかります。 問題を解決するためのアプローチ 中間駅が8つあり、3つの中間駅で電車を止める方法を見つける必要がある例を見てみましょう。 n = 8, s = 3 (n-s)、つまり電車が止まらない駅が5つ残っています 電車が止まらないA、B、C、D、Eの5つの駅があります

  2. C++を使用してセットの反射関係の数を見つける

    この記事では、集合上の反射関係の数を見つけるためのアプローチについて説明します。この問題では、数nが与えられ、n個の自然数のセットで、反射関係の数を決定する必要があります。 反射関係 −集合Aの関係は、(a、a)が集合Aに属するすべてのaがRに属する場合、反射的と呼ばれます。たとえば、- Input : x = 1 Output : 1 Explanation : set = { 1 }, reflexive relations on A * A : { { 1 } } Input : x = 2 Output : 4 Explanation : set = { 1,2 }, reflex