【问题标题】:How to find the greatest power of 2 dividing a number using GMP?如何使用GMP找到2的最大幂?
【发布时间】:2010-10-25 01:27:33
【问题描述】:

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

【问题讨论】:

    标签: gmp


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 2018-01-11
      相关资源
      最近更新 更多