相关疑难解决方法(0)

C++处理非常大的整数

我使用RSA算法进行加密/解密,为了解密文件,你必须处理一些非常大的值.更具体地说,像

P = C^d % n
  = 62^65 % 133
Run Code Online (Sandbox Code Playgroud)

现在这真的是唯一不适当的计算.我尝试过使用Matt McCutchen的BigInteger库,但是在链接过程中我遇到了很多编译错误,例如:

encryption.o(.text+0x187):encryption.cpp: undefined reference to `BigInteger::BigInteger(int)'

encryption.o(.text+0x302):encryption.cpp: undefined reference to `operator<<(std::ostream&, BigInteger const&)'

encryption.o(.text$_ZNK10BigIntegermlERKS_[BigInteger::operator*(BigInteger const&) const]+0x63):encryption.cpp: undefined reference to `BigInteger::multiply(BigInteger const&, BigInteger const&)'
Run Code Online (Sandbox Code Playgroud)

所以我想知道处理RSA算法产生的真正大整数的最佳方法是什么.

我听说有可能将你的变量声明为双倍长,所以......

long long decryptedCharacter;
Run Code Online (Sandbox Code Playgroud)

但我不确定可以存储多大的整数.


好吧,例如,我尝试使用dev C++编译并运行以下程序:

#include iostream

#include "bigint\BigIntegerLibrary.hh"

using namespace std;

int main()
{
    BigInteger a = 65536;
    cout << (a * a * a * a * a * a * a * a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我得到了那些错误.

Derek,我认为通过包含BigIntegerLibrary.hh文件,编译器会经历并编译它将使用的所有必要文件. …

c++ integer rsa biginteger

23
推荐指数
4
解决办法
7万
查看次数

如何用原始类型进行模乘法

有没有办法构建例如(853467 * 21660421200929) % 100000000000007没有BigInteger库(请注意,每个数字都适合64位整数,但乘法结果不适合)?

这个解决方案效率低下:

int64_t mulmod(int64_t a, int64_t b, int64_t m) {
    if (b < a)
        std::swap(a, b);
    int64_t res = 0;
    for (int64_t i = 0; i < a; i++) {
        res += b;
        res %= m;
    }
    return res;
}
Run Code Online (Sandbox Code Playgroud)

c++ algorithm

12
推荐指数
4
解决办法
6301
查看次数

计算(a ^ b)%MOD

我想编码用于计算pow(a,b)%MOD的值.我使用C++进行编码.

但问题是b的值可能非常大.我知道log(b)时间复杂度方法.但是,b的值可能不适合C++的"long long"数据类型.例如,b可以是1000000000个斐波那契数.这样一个大数字的精确计算本身是不可能的(在时间限制内).

PS:

  • pow(a,b)表示a*a*a*a*... b次.
  • X%MOD表示通过MOD除以X得到的余数.

c++ math

8
推荐指数
1
解决办法
8593
查看次数

具有大数量的模数% - 无穷大错误 - Javascript

是否有诀窍在Javascript中获取大数字的模数.我得到了modulo(7, 16971, 25777) 无穷无尽的7 ^ 16971mod25777 = NaN

function modulo (n, p, m){
var x = Math.pow(n, p);
var y = m;
var z = x%y;
alert(x);
return z;
}
Run Code Online (Sandbox Code Playgroud)

javascript math modulo infinity pow

7
推荐指数
1
解决办法
1207
查看次数

Pow()计算错了?

我需要在我的c ++程序中使用pow,如果我以pow()这种方式调用函数:

long long test = pow(7, e);
Run Code Online (Sandbox Code Playgroud)

哪里

e是整数值,值为23.

我总是得到821077879结果.如果我用Windows计算器计算它我得到27368747340080916343..这里有什么不对?):

我试图投射到不同类型,但没有任何帮助...这可能是什么原因?我怎么能pow()正确使用?

谢谢!

c++ pow

4
推荐指数
2
解决办法
2822
查看次数

计算pow(45,60)mod 61

这是一个家庭作业问题.

我需要计算45 ^ 60 mod 61.我想知道任何快速方法以编程方式或手动方式获得结果,无论哪个更快.

c c# algorithm math

3
推荐指数
2
解决办法
784
查看次数

不使用Math.BigInteger的高功率模数

我必须把这个公式变成java代码:

如果我可以使用像Math.BigInteger这样的库会更容易,但遗憾的是我应该在没有它的情况下这样做.stackoverflow上的一些类似问题建议编写一个自己的bignum库,但我想在没有它的情况下这样做.

现在,我的进展是在这一步:

int h(String s) {
  long value = 1;
  int mod = ht.length;

  for (int i=0; i < s.length()-1; i++) {
     h += s.charAt(i) * Math.pow(256,i);
  }
  return (int) h % mod;
}
Run Code Online (Sandbox Code Playgroud)

我知道功率的值在整数范围内变得非常快,所以我想到编写一个自己的方法来计算值的功率和模数.我的数学知识还不足以知道何时使用模数以及如何简化事物.

提前致谢!

java math exponent modulo

3
推荐指数
1
解决办法
524
查看次数

当A,B,M是大数时,如何计算(A ^ B)%M?

例如,如果A = 864927518,B = 1462579282,M = 193773611,如何计算(A^B)%M

有一个简单的方法吗?

python algorithm math exponentiation python-3.x

2
推荐指数
1
解决办法
479
查看次数