Counting digit
Décio Luiz Gazzoni Filho
decio at decpp.net
Tue Mar 16 22:42:53 CET 2010
On Mar 16, 2010, at 4:44 PM, Paul Zimmermann wrote:
>
> Giovanni,
>
>> I must count digits "1" in a base 18 number.
>> Does'it exist a function in Gmp, like DigitCount function in Mathematica?
>
> there is mpz_sizeinbase, but it might be wrong by 1 for base 18:
>
> -- Function: size_t mpz_sizeinbase (mpz_t OP, int BASE)
> Return the size of OP measured in number of digits in the given
> BASE. BASE can vary from 2 to 62. The sign of OP is ignored,
> just the absolute value is used. The result will be either exact
> or 1 too big. If BASE is a power of 2, the result is always
> exact. If OP is zero the return value is always 1.
>
> You might also use mpz_get_str and strlen for an exact result.
I think he means counting occurrences of the digit 1 in the base-18 expansion of the number (that's what his explanation sounds like, no idea what DigitCount in Mathematica does). Short of doing a base conversion (via mpz_get_str) and a while loop which counts 1s, I don't see a way to do it.
Décio
More information about the gmp-discuss
mailing list