首頁  >  文章  >  後端開發  >  C/C++模組方程式解的程序

C/C++模組方程式解的程序

PHPz
PHPz轉載
2023-08-26 16:37:031419瀏覽

C/C++模組方程式解的程序

在數學中,模方程式是模題意義上滿足的代數方程式。也就是說,給定模空間上的多個函數,模方程是它們之間的方程,或者換句話說,模恆等式。

術語「模」最常用的用法方程式與橢圓曲線的模問題有關。在這種情況下,模空間本身就是一維的。這意味著模曲線函數域中的任意兩個有理函數FG 將滿足模方程式P(F, G) = 0 其中P 是兩個變數在複數上的非零多項式。對於 F 和 G 的適當非簡併選擇,方程式 P(X,Y) = 0 實際上將定義模曲線。

你剛剛看到了一個奇怪的數學表達式,其形式為

B ≡ (A mod X)

這表示 B 與 A 模 X 全等。讓我們舉個例子,

21 ≡ 5( mod 4)

符號 equal 表示「等價」。在上式中,21 和 5 是等價的。這是因為 21 modulo 4 = 1 等於 5 modulo 4 = 1。另一個例子是51 eq 16( mod 7)

在這個問題中,我們有兩個整數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} 中的任一個,因為這些值中任一個的A 模等於2 i。例如,(26 mod 3) = (26 mod 4) = (26 mod 6) = (26 mod 8) = .... = 2

我們有方程式A mod X = B

條件

if (A = B) 那麼將會有無數個值,其中A 總是大於X。

if (A

現在只剩下最後一種情況了 (A > B)。

現在,在這種情況下,我們將使用關係

被除數= 除數* 商餘數

X,即給定A(即被除數)和B(即餘數)的除數。

現在

##A = X * 商B

設商表示為Y

∴ A = X * Y B

A - B = X * Y

∴要得到Y 的整數值,

我們需要取所有X,使得X 除以( A - B )

∴ X 是(A - B) 的約數

找到(A – B) 的約數是主要問題,而約數的數量就是X 可能取的值。

我們知道 A mod X 的解值會從 (0 到 X – 1) 取所有這樣的 X,使得 X > B。

這樣我們就可以得出結論,(A – B) 的約數個數大於B,而所有可能的值X 都可以滿足A mod X = B

範例

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

以上是C/C++模組方程式解的程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除