【问题标题】:NTL Library: How to assign a big integer to ZZ_pNTL 库:如何将大整数分配给 ZZ_p
【发布时间】:2015-07-13 14:47:27
【问题描述】:

在 NTL 库中,我知道我们可以将一个大整数值定义为:

ZZ p;
p=to_ZZ("1111111111111111111111111111111333333333333333");
ZZ_p::init(p);
ZZ_p b(12);

我的问题是:如果我想给 b 分配一个大整数而不是 12 怎么办?

例如

ZZ_p b("1111111111111111111111111111111333333333333334");

所以它应该以 p 为模并将 1 分配给 b

fFindRoots(vec_ZZ_p& x, const ZZ_pX& ff) 需要它,因此可以将大整数作为系数插入到向量中(多项式的)

【问题讨论】:

    标签: c++ ntl


    【解决方案1】:

    首先:我尝试了您发布的代码,ZZ_p b(12); 行对我不起作用。 我不得不使用

    ZZ_p b;
    b = 12;
    

    如果你想分配一个大整数,你可以这样做

    ZZ_p b;
    b = to_ZZ_p(conv<ZZ>("1111111111111111111111111111111333333333333334"));
    

    char bigInteger[47] = "1111111111111111111111111111111333333333333334";
    ZZ_p b;
    b = to_ZZ_p(conv<ZZ>(bigInteger));
    

    cout &lt;&lt; b &lt;&lt; endl; 现在将打印1

    【讨论】:

    • 你知道如何用变量分配替换“111....33334”吗?因为我有一个大整数数组,我想将它们转换为 ZZ_p。我试过: string s="111....33334" ; b = to_ZZ_p(conv(s));但它不起作用。
    • @user5111525 你的“大整数”有什么类型?
    • 类型为“mpz_t”的GMP大整数。
    • @user5111525 我不确定如何将其转换为ZZ 类型。我的猜测是,您必须先转换为 cstring。我添加了一个示例。
    • 谢谢。我做了如下:1-将大整数转换为字符串:string s="111111.....2"; 2- char*cc=new char [s.length()]; 3-strcpy(cc,s.c_str()); 4- ZZ_p b=to_ZZ_p (conv(cc));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多