【发布时间】:2012-06-24 21:03:18
【问题描述】:
请考虑以下代码:
mpz_t x, n, out;
mpz_init_set_ui(x, 2UL);
mpz_init_set_ui(n, 7UL);
mpz_init(out);
mpz_invert(out, x, n);
gmp_printf ("%Zd\n", out);//prints 4. 2 * 4 (mod 7) = 1. OK
mpz_powm_ui(out, x, -1, n);//prints 1. 2 * 1 (mod 7) = 2. How come?
gmp_printf ("%Zd\n", out);
mpz_clear(x);
mpz_clear(n);
mpz_clear(out);
我无法理解 mpz_powm 函数如何处理负指数,尽管根据文档,它应该支持它们。我希望将一个数字提高到 -1 模 n 相当于将它取反模 n。我在这里错过了什么?
【问题讨论】:
标签: c++ primes gmp negative-number