1

我想在 C++ 中转换 Java 代码

代码是

BigInteger value = new BigInteger(125, RandomNumber); 
BigInteger clone = new   BigInteger(value.toByteArray());

如何使用 gmp 库在 cpp 中编写此代码?

请任何人帮助我。谢谢。

4

2 回答 2

0

使用 C++,您可以做到这一点

#include <gmpxx.h>
#include <gmp.h>
#include <iostream>
using namespace std;

int main(){
  mpz_class value;
  mpz_class clone;
  gmp_randclass r(gmp_randinit_default);
  value = r.get_z_bits(125);
  clone = value;
  cout << value << endl;
  cout << clone << endl;                                                                                                                                                                     
  return 0;
}

并使用 g++ file.cpp -lgmpxx -lgmp 编译

安装 libgmpxx.a 将 --enable-cxx 放到 ./configure 的构建选项中

于 2012-07-31T11:18:14.420 回答
0

这是来自维基百科的抄本

下面是一个 C 代码示例,展示了使用 GMP 库来乘法和打印大数:

#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>

int main(void)
{
 mpz_t x;
 mpz_t y;
 mpz_t result;

 mpz_init(x);
 mpz_init(y);
 mpz_init(result);

 mpz_set_str(x, "7612058254738945", 10);
 mpz_set_str(y, "9263591128439081", 10);

 mpz_mul(result, x, y);
 gmp_printf("\n    %Zd\n*\n    %Zd\n--------------------\n%Zd\n\n", x, y, result);

 /* free used memory */
 mpz_clear(x);
 mpz_clear(y);
 mpz_clear(result);
 return EXIT_SUCCESS;
}

此代码计算 7612058254738945 × 9263591128439081 的值。

编译和运行这个程序会得到这个结果。(如果在 Unix 类型的系统上编译,则使用 -lgmp 标志。)

    7612058254738945
*
    9263591128439081
--------------------
70514995317761165008628990709545
于 2012-07-31T10:51:49.997 回答