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