使用 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 得到余数 2,这等于 Y。我们将解决模量方程以这种方式。

寻找解决方案的方法

我们可以应用一种简单的方法,将 X 除以从 1 开始的每个整数并检查它是否给出余数 Y,或者我们可以将 (X - Y) 与每个整数和除 (X - Y) 但不是 X 的整数除以解决方案. 让我们编写一个 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++) {
        // 如果 N 可以被 i 整除
        if ((N % i) == 0) {
            // 如果整数大于 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"
            " 比...更棒 " << X << "\n";
    }
    else {
        cout << "Number of solution = " << noOfSolutions;
    }
}
// 主功能
int main(){
    int X,Y;
        cin >> X;
        cin >> Y;
    numberofsolutions(X, Y);
    return 0;
}
输出结果

当我们写 0 作为输入时,程序会给出这样的输出 -

X can take Infinitely many values 比...更棒 0

当我们输入其他数字时,上面的程序会显示这样的输出(这里我们提供了 5 作为输入) -

Number of solution = 2

以上代码说明

现在我们将解释每个功能,以便您可以轻松理解程序。

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 或任何其他编程语言)编写相同的程序。希望您发现本文有助于理解如何找到模方程的多个解的概念。