Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

モジュラ方程式の解の数のためのC/C ++プログラム?


数学では、モジュラ方程式モジュラスによって満たされる代数方程式です 、モジュラス問題の意味で。つまり、モジュライ空間上の多くの関数が与えられた場合、モジュラ方程式はそれらの間に保持される方程式、つまりモジュライの同一性です。

モジュラ方程式という用語の最も頻繁な使用 楕円曲線のモジュライ問題に関連しています。その場合、モジュライ空間自体は次元1です。これは、任意の2つの有理関数 F およびG 、モジュラー曲線の関数フィールドで、モジュラ方程式 P(F、G)=0を満たします。 P 複素数に対する2つの変数の非ゼロ多項式。 FとGの適切な非縮退選択について 、方程式 P(X、Y)=0 実際にモジュラー曲線を定義します。

フォームの奇妙な種類の数式を見ただけです

B≡(A mod X)

これは、BがXを法とするAと合同であることを示しています。例を見てみましょう。

21≡5(mod 4)

記号equivは「同等」を意味します。上記の式では、21と5は同等です。これは、21モジュロ4=1が5モジュロ4=1に等しいためです。別の例は51≡16(mod 7)

です。

この問題では、2つの整数aとbがあり、モジュラ方程式(A mod X)=Bに従う可能性のある値xの数を見つける必要があります。ここで、モジュラ方程式のX解です。

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

説明

Xは{3、4、6、8、12、24}のいずれかに等しくなります。これは、これらの値のいずれかが2iに等しいためです。たとえば、(26 mod 3)=(26 mod 4)=(26 mod 6)=(26 mod 8)=.... =2

方程式AmodX =B

があります。

条件

(A =B)の場合、Aが常にXよりも大きい値は無限にあります。

(A

これで、最後のケースのみが残ります(A> B)。

さて、この場合、リレーションを使用します

配当=除数*商+剰余

Xつまり、A、つまり配当とB、つまり剰余が与えられた除数。

A =X*商+B

商をYとして表すとします

∴A=X* Y + B

A-B =X * Y


∴Yの整数値を取得するには、

Xが(A-B)を分割するようにすべてのXを取る必要があります


∴Xは(A-B)の約数です

(A – B)の約数を見つけることが主な問題であり、そのような約数の数はXが取ることができる可能な値です。

A mod Xの解の値は(0からX – 1)であり、X>BとなるようなすべてのXを取ります。

このように、(A – B)の約数の数がBより大きく、A mod X=Bを満たすことができるすべての可能な値Xがあると言うことで結論付けることができます

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

  1. 放物線の頂点、焦点、および直接線を見つけるためのC / C ++プログラム?

    ここでは、CまたはC ++プログラムを使用して、放物線の頂点、フォーカスdirectrixを見つける方法を説明します。これらのパラメータを取得するには、放物線の一般方程式が必要です。一般式は-です。 𝑦 = 𝑎𝑥2 + 𝑏𝑥 + 𝑐 a、b、cの値が示されています。 頂点の式- フォーカスの式- Directrixの式--y− 例 #include <bits/stdc++.h> using namespace std; void getParabolaDetails(float a, float b, float c) {

  2. 三角マッチ棒番号のC/C ++プログラム?

    ここでは、ピラミッドを作るために必要なマッチ棒の数を数える方法を以下に示します。ピラミッドのベースが与えられます。したがって、ベースが1の場合、ピラミッドを作成するには3本のマッチ棒が必要です。ベース2の場合は9本のマッチ棒が必要であり、ベースサイズ3の場合は18本のマッチ棒が必要です。 この問題を解決するには、次の式を使用する必要があります- 例 #include <iostream> using namespace std; int main(){    int x;    cout << "Enter