根据GMP文件here:
功能:unsigned long int mpz_remove (mpz_t rop,mpz_t op,mpz_t f)
删除所有出现的因子f 从op并将结果存储在rop中。 返回值是多少这样的 事件被删除了。
因此mpz_remove函数应该可以用来回答标题问题。目前我的代码看起来像这样:
mpz_set_ui(temp2,2);
mpz_remove(temp,K0,temp2);
哪个工作正常,但我想要的结果是K0除以temp(而不是temp本身)[我可以通过添加后续的除法运算来获得,但这看起来很浪费]。
我应该如何实际获得K0 / temp?
答案 0 :(得分:1)
您可以尝试使用mpz_scan1()和mpz_tdiv_q_2exp()的组合。
mpz_tdiv_q_2exp(result,K0,mpz_scan1(K0,0))