2012-07-31 71 views
0

我要转换的Java代码在C++中BigInteger的Java方法,以GMP C++

代码

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

如何编写使用GMP库中的cpp的代码?

请任何人都帮助我。 谢谢。

+0

[你尝试过什么?](http://WhatHaveYouTried.com) – 2012-07-31 10:48:53

+1

的#include mpz_t value; mpz_init2(randomnumber,125); – user1545975 2012-07-31 10:51:33

+0

我建议查看文档。如果你已经这样做了,你会描述你的代码面临的问题。 – 2012-07-31 10:55:20

回答

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

并用 克++ file.cpp -lgmpxx -lgmp

编译

安装libgmpxx.a 把--enable-CXX来的./configure的构建选项

+0

我正在使用VC++。我正在使用gmp.h和gmp.lib文件。我如何使用gmpxx.h? – user1545975 2012-07-31 12:07:19

+0

请帮助我如何在VC++项目中使用gmpxx.h – user1545975 2012-07-31 12:11:42

+0

您可以试试这个:http://www.exploringbinary.com/how-to-install-and-run-gmp-on-windows-using-mpir/ – Galaad 2012-07-31 16:01:52

0

这里是来自维基百科

这里碳副本的表示使用GMP库的繁殖和打印大量的C代码的例子:

#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.

编译并运行该程序给出了这个结果。 (该-lgmp标志如果汇编关于UNIX类型的系统中使用。)

7612058254738945 
* 
    9263591128439081 
-------------------- 
70514995317761165008628990709545