Collatz問題 #4

初期値をunsigned longよりも大きくしたい場合はナル終端文字配列や文字列リテラルで指定できる。

...snip
int main(void)
{
    mpz_t x, iter;
    mpz_inits(x, iter, NULL);
    mpz_set_str(x, "9876543210987654321098765432109876543210987654321012345678901234567891", 10);
    collatz(iter, x);
    gmp_printf("%Zu: %Zu\n", x, iter);
    mpz_clears(x, iter, NULL);
    return 0;
}

結果は、
9876543210987654321098765432109876543210987654321012345678901234567891: 1644
となる。