使用 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 或任何其他程式語言)編寫相同的程式。希望本文能幫助您理解如何查詢模方程的解的個數的概念。

更新於:2021-11-24

179 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告