Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何正确使用GMP进行此操作?_C++_Gmp - Fatal编程技术网

C++ 如何正确使用GMP进行此操作?

C++ 如何正确使用GMP进行此操作?,c++,gmp,C++,Gmp,我的C代码++ long long N=1000000000000LL; long long a = N; mpz_class v; mpz_mul(v, a, a); cout<<v<<endl; //I want this to show 1000000000002000000000001 long long U=((sqrt(4*N+v)-1)/4); //not sure how to do this in GMP at a

我的C代码++

   long long N=1000000000000LL;
   long long a = N;
   mpz_class v;
   mpz_mul(v, a, a); 
   cout<<v<<endl; //I want this to show 1000000000002000000000001
   long long U=((sqrt(4*N+v)-1)/4);  //not sure how to do this in GMP at all
   cout << U << endl; //should show 250000000000
long N=10000000000ll;
长a=N;
mpz_五级;
mpz_mul(v,a,a);
coutmpz_类有(它只会增加到无符号长),所以您必须使用一个中间字符串:

#include <gmpxx.h>
#include <iostream>
#include <string>

int main()
{
    long long N = 1000000000000LL;
    mpz_class a(std::to_string(N).c_str());
    mpz_class v = a*a;
    std::cout << v << '\n'; // shows 1000000000000000000000000
    std::cout << (a+1) * (a+1) << '\n'; // THIS shows 1000000000002000000000001

    mpz_class U = ((sqrt(4*a+v)-1)/4);
    std::cout << U << '\n'; // shows 250000000000
}
#包括
#包括
#包括
int main()
{
长N=10000000000LL;
mpz_类a(std::to_string(N.c_str());
mpz_v类=a*a;

STD::我也使用MPZYT或MPZYCH类吗?@ CalimaMPZYE类对于C++程序是自然的。由于字符串行不适合我,所以总是可以访问MPZYT。任何原因?“ToString不是STD成员”@ CalIMA,编译器可能太老而无法支持它——从<代码> 1000000000000开始。
,字符串。为什么L=ceil((sqrt(v-4*N)-1)/4)-1;会抛出“eval”错误?