如何使用GMP找到2分数的最大功率?

时间:2010-10-25 01:27:34

标签: gmp

根据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?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用mpz_scan1()和mpz_tdiv_q_2exp()的组合。

mpz_tdiv_q_2exp(result,K0,mpz_scan1(K0,0))