开发者

How to find the greatest power of 2 dividing a number using GMP?

According to the GMP documentation here:

Function: unsigned long int mpz_remove (mpz_t rop, mpz_t op, mpz_t f)

Remove all occurrences of the factor f from op and store the result in rop. The return value is how many such occurrences were removed.

So the mpz_remove function should be able to be used to answer the titled question. At the moment my code looks like this:

  mpz_set_ui(temp2,2);
  mpz_remove(temp,K0,temp2);

which works fine, but the result I want is K0 divided by temp (and not temp itself) [which I could get by adding a subsequent division operation, but that seems wasteful].

How should I ac开发者_如何转开发tually get K0/temp?


You might try the combination of mpz_scan1() and mpz_tdiv_q_2exp().

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜