使用 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。我們將以這種方式解決模方程。
查詢解的方法
我們可以採用一種簡單的方法,從 1 開始依次除以 X,並檢查它是否得到餘數 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++) { // 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 的除數個數,這些除數除以 X 後餘數為 Y。
Numberofdivisor() 函式
此函式透過執行一個從 1 到 (X - Y)/2 的迴圈來查詢 X - Y 的除數個數,並檢查每個整數是否可以整除,並且此整數不能完美地整除 X。
結論
模方程的解是能整除 X 並得到餘數 Y 的整數;我們從各種示例中理解了這一點。方程可能有一些解,因此我們透過應用一種簡單的方法來找到這些解。
我們可以編寫一個 C++ 程式來計算模方程的解。我們也可以用其他語言(如 C、Java、Python 或任何其他程式語言)編寫相同的程式。希望本文能幫助您理解如何查詢模方程的解的個數的概念。
廣告