Maison  >  Article  >  développement back-end  >  Programme de résolution d'équations du module C/C++

Programme de résolution d'équations du module C/C++

PHPz
PHPzavant
2023-08-26 16:37:031372parcourir

Programme de résolution déquations du module C/C++

En mathématiques, équation modulaire est une équation algébrique qui satisfait modulo au sens de problème modulaire. Autrement dit, étant donné plusieurs fonctions sur un espace de modules, l'équation modulaire est l'équation entre elles, ou en d'autres termes, l'identité modulaire.

L'usage le plus courant du terme équations « modulaires » est lié au problème modulaire des courbes elliptiques. Dans ce cas, l’espace des modules lui-même est unidimensionnel. Cela signifie que deux fonctions rationnelles F et G dans le domaine des fonctions de courbe modulaire satisferont l'équation modulaire P(F, G) = 0 P est un polynôme non nul des deux variables sur les nombres complexes. Pour des choix non dégénérés appropriés de F et G, l'équation P(X,Y) = 0 définira en fait la courbe modulaire.

Vous venez de voir une étrange expression mathématique de la forme

B ≡ (A mod X)

Cela signifie que B est congru à A mod X. Prenons un exemple,

21 ≡ 5( mod 4)

Le symbole égal signifie « équivalent ». Dans l'équation ci-dessus, 21 et 5 sont équivalents. En effet, 21 modulo 4 = 1 est égal à 5 ​​modulo 4 = 1. Un autre exemple est 51 eq 16(mod 7)

Dans ce problème, nous avons deux entiers a et b et nous devons trouver le nombre de valeurs possibles de x qui suivent l'équation modulaire (A mod X)=B, où l'équation modulaire Solution de X.

Par exemple

Input: A = 26, B = 2
Output: X can take 6 values

explique que

Par exemple, (26 mod 3) = (26 mod 4) = (26 mod 6) = (26 mod 8) = .... = 2

Nous avons l'équation A mod X = B

condition

si (A = B) Alors il y aura un nombre infini de valeurs où A est toujours supérieur à X.

si (A

Il ne reste plus que le dernier cas (A > B).

Maintenant, dans ce cas, nous utiliserons la relation

Dividende = Diviseur * Quotient + Reste

X, qui est le diviseur étant donné A (c'est-à-dire le dividende) et B (c'est-à-dire le reste).

Maintenant

A = X * Quotient + B

Laissons le quotient être exprimé comme Y

∴ A = Valeur,

Nous devons prendre tout X tel que X divisé par (A - B)

∴ Le problème principal est que le nombre de diviseurs correspond aux valeurs possibles que X peut prendre.

Nous savons que la valeur de la solution de A mod X sera de (0 à X – 1) en prenant tout X tel que X > B.

De cette façon, nous pouvons conclure que le nombre de diviseurs de (A – B) est supérieur à B, et toutes les valeurs possibles de X peuvent satisfaire A mod X = B

Exemple

#include <iostream>
#include <math.h>
using namespace std;
int Divisors(int A, int B) {
   int N = (A - B);
   int D = 0;
   for (int i = 1; i <= sqrt(N); i++) {
      if ((N % i) == 0) {
         if (i > B)
            D++;
         if ((N / i) != i && (N / i) > B)
            D++;
      }
   }
   return D;
}
int PossibleWaysUtil(int A, int B) {
   if (A == B)
      return -1;
   if (A < B)
      return 0;
   int D = 0;
   D = Divisors(A, B);
   return D;
}
int main() {
   int A = 26, B = 2;
   int Sol = PossibleWaysUtil(A, B);
   if (Sol == -1) {
      cout <<" X can take Infinitely many values greater than " << A << "\n";
   } else {
      cout << " X can take " << Sol << " values\n";
      return 0;
   }
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer