我想要計算大數mod的乘法倒數另一個大數。例如,我想計算6003722857 mod 77695236973的乘法逆。我編寫了一些C++代碼來執行此操作。它適用於像a = 1891和n = 3797這樣的小數字,但是一旦我嘗試了非常大的數字,該程序就無法工作。沒有錯誤。看起來它正在計算一些東西,但程序剛剛結束。使用C++計算大數的乘法倒數
任何意見,將不勝感激。謝謝!
#include <iostream>
using namespace std;
int main()
{
long long int a = 0, n = 0;
cout << "Enter a: ";
cin >> a;
cout << "Enter n: ";
cin >> n;
for (long long int c = 1; c < n; c++) {
long long int num = a*c - 1;
if (num%n == 0) {
cout << "The multiplicative inverse is " << c << "." << endl;
break;
}
}
return 0;
}
你可能溢出變量。嘗試使用諸如[GMP]之類的「bignum」庫(https://gmplib.org/)。 –
你如何運行程序? (並且你在編譯什麼?)「僅僅結束」似乎是一個令人驚訝的結果。對我來說(使用VS2013),它會掛起,正如在爬過如此巨大的搜索空間時所預期的那樣。 – Rook
如果程序「剛剛結束」,是否可能是c> = n?如果預計不會發生這種情況,可能就像@JoachimPileborg所建議的那樣。 –