Maison > Article > développement back-end > Trouver le nombre de solutions d'une équation modulaire en utilisant C++
Dans cet article, nous expliquerons ce que sont les solutions d'équations modulaires et nous écrirons également un programme pour trouver plusieurs solutions d'équations modulaires. Voici l'exemple de base -
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)
Comme nous l'avons vu dans l'exemple ci-dessus, chaque entier est une solution qui donne un reste Y après avoir divisé X. Dans cet exemple, diviser 30 par 4, 7, 14 et 28 donne un reste de 2, qui est égal à Y. Nous allons résoudre l’équation modulaire de cette façon.
Nous pouvons appliquer une méthode simple pour diviser X par chaque entier à partir de 1 et vérifier si cela donne le reste Y ou nous pouvons diviser (X - Y) par chaque entier et diviser par (X - Y) mais la solution n'est pas par nombres entiers de X. Écrivons un programme C++ pour trouver différentes solutions à une équation modulaire.
#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; }
Lorsque nous écrivons 0 en entrée, le programme donne une sortie comme celle-ci -
X can take Infinitely many values greater than 0
Lorsque nous entrons d'autres nombres, le programme ci-dessus affiche une sortie comme celle-ci (Ici, nous avons donné 5 comme Entrée) -
Number of solution = 2
Maintenant, nous expliquons chaque fonction afin que vous puissiez facilement comprendre le programme.
Dans la fonction principale, nous prenons les valeurs de X et Y en entrée et trouvons le nombre de solutions possibles en appelant la fonction numberofsolutions().
Cette fonction vérifie si X et Y satisfont à la condition selon laquelle X doit être supérieur à Y, car nous ne pouvons pas trouver de reste supérieur au dividende. Cette fonction appelle une autre fonction numberofdivisor() et obtient le nombre de diviseurs de X, ce qui donne le reste Y.
Cette fonction trouve le nombre de diviseurs de
La solution d'une équation modulaire est un entier qui divise X et obtient le reste Y, nous le savons à partir de divers exemples ; L'équation peut avoir des solutions, nous trouvons donc ces solutions en appliquant des méthodes simples.
Nous pouvons écrire un programme C++ pour calculer la solution de l'équation modulaire. Nous pouvons écrire le même programme dans d'autres langages comme C, Java, Python ou tout autre langage de programmation. J'espère que vous avez trouvé cet article utile pour comprendre le concept de recherche de plusieurs solutions aux équations modulaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!