Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm số lời giải cho phương trình mô-đun bằng C ++

Trong bài viết này, chúng tôi sẽ giải thích mọi thứ về nghiệm của phương trình mô-đun là gì, ngoài ra chúng tôi sẽ viết một chương trình để tìm một số nghiệm của phương trình mô-đun. Đây là ví dụ cơ bản -

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)

Như chúng ta có thể thấy trong ví dụ trên, mọi số nguyên là nghiệm cho phần dư Y khi chia X. Trong ví dụ này, chia 30 với 4, 7, 14, 28 cho phần dư là hai, bằng Y. Chúng ta sẽ giải. phương trình mô đun theo cách này.

Phương pháp tiếp cận để tìm giải pháp

Chúng ta có thể áp dụng một phương pháp đơn giản là chia X cho mỗi số nguyên bắt đầu từ 1 và kiểm tra xem nó có dư Y hay chúng ta có thể chia (X - Y) với mỗi số nguyên và số nguyên chia (X - Y) nhưng không phải X là nghiệm . Hãy viết một chương trình C ++ để tìm một giải pháp khác cho phương trình mô-đun.

Ví dụ

#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;
}

Đầu ra

Khi chúng ta viết 0 như một đầu vào, thì chương trình sẽ đưa ra một đầu ra như thế này -

X can take Infinitely many values greater than 0

Khi chúng ta đặt các số khác, thì chương trình trên sẽ hiển thị đầu ra như thế này (ở đây chúng tôi đã cung cấp 5 làm đầu vào) -

Number of solution = 2

Giải thích về Quy tắc trên

Bây giờ chúng tôi sẽ giải thích từng chức năng để bạn có thể hiểu chương trình một cách dễ dàng.

hàm main ()

Trong hàm main, chúng ta lấy giá trị của X và Y làm đầu vào và tìm số giải pháp khả thi bằng cách gọi hàm numberofsolutions ().

Hàm Numberofsolutions ()

Hàm này kiểm tra xem X và Y có thỏa mãn điều kiện hay không, trong đó X phải lớn hơn Y vì chúng ta không thể tìm thấy phần dư lớn hơn cổ tức. Hàm này gọi một hàm khác numberofdivisor () và tìm nạp số ước của X, cho phần dư Y.

Hàm Numberofdivisor ()

Hàm này tìm số ước của X - Y bằng cách chạy một vòng lặp từ 1 đến (X - Y) / 2 và kiểm tra mọi số nguyên xem nó có chia hết hay không và số nguyên này không được chia hoàn toàn X.

Kết luận

Giải phương trình môđun là số nguyên chia X và dư Y; chúng tôi hiểu điều này từ các ví dụ khác nhau. Phương trình có thể có một số giải pháp, vì vậy chúng tôi tìm ra các giải pháp này bằng cách áp dụng một cách tiếp cận đơn giản.

Chúng ta có thể viết một chương trình C ++ sẽ tính toán các nghiệm của phương trình mô-đun. Chúng ta có thể viết cùng một chương trình bằng các ngôn ngữ khác như C, Java, Python, hoặc bất kỳ ngôn ngữ lập trình nào khác. Hy vọng bạn thấy bài viết này hữu ích trong việc hiểu khái niệm về cách tìm một số nghiệm của phương trình mô-đun.