写在前面:
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出。欢迎各位前来交流。(部分材料来源网络,若有侵权,立即删除)
Python gmpy2 mpz Methods
mpz方法
-
bit_clear(…)
x.bit_clear(n) 返回x的一个副本,其位数n设置为0。 -
bit_flip(…)
x.bit_flip(n)返回x的一个副本,其中位n被倒置。 -
bit_length(…)
x.bit_length() 返回x的radix-2表示法中的有效位数。为了与Python兼容,mpz(0).bit_length()返回0。 -
bit_scan0(…)
x.bit_scan0(n) 返回索引>= n的x的第一个0位的索引。如果在索引n处或以上的x中没有更多的0位(这只能发生在x < 0的情况下,假设是无限长的2’s complement格式),那么就返回None。 -
bit_scan1(…)
x.bit_scan1(n)返回索引>=n的x的第一个1比特的索引。如果在索引n处或以上的x中没有更多的1比特(这只能发生在x>=0的情况下,假设是无限长的2的补码格式),那么返回None。 -
bit_set(…)
x.bit_set(n) 返回x的副本,位n设置为1。 -
bit_test(…)
x.bit_test(n)如果x的位n被设置,则返回True,如果没有设置则返回False。
分母(…) -
x.denominator() 返回 mpz(1)。
-
digits(…)
x.digits([base=10]) 返回代表 x 的小数点的字符串。
分子(…) -
x.numerator() 返回一个x的副本。
num_digits(…) -
x.num_digits([base=10]) 返回代表 x 的绝对值的小数点的字符串的长度。如果基数是2的幂,结果是正确的。对于其他基数,结果通常是正确的,但可能是1太大。基数可以在2和62之间,包括在内。
mpz函数 -
add(…)
add(x, y) 返回x + y,结果类型取决于输入类型。 -
bincoef(…)
bincoef(x, n)返回二项式系数,n必须>=0。 -
bit_clear(…)
bit_clear(x, n)返回x的副本,位n被设置为0。 -
bit_flip(…)
bit_flip(x, n)返回x的副本,并将位n倒置。 -
bit_length(…)
bit_length(x) 返回x的radix-2表示法中的有效位数。为了与Python兼容,mpz(0).bit_length()返回0,而mpz(0).num_digits(2)返回1。 -
bit_mask(…)
bit_mask(n)返回一个长度为n比特的mpz对象,并且所有比特都被设置。 -
bit_scan0(…)
bit_scan0(x, n) 返回索引>= n的x的第一个0位的索引。如果在索引n处或以上的x中没有更多的0位(这只能发生在x<0的情况下,假设是无限长的2’s complement格式),那么就返回None。 -
bit_scan1(…)
bit_scan1(x, n) 返回索引>=n的x的第一个1比特的索引。如果在索引n处或以上的x中没有更多的1比特(这只发生在x>=0时,假设是无限长的2的补码格式),则返回None。 -
bit_set(…)
bit_set(x, n) 返回x的副本,并将位n设置为1。 -
bit_test(…)
bit_test(x, n) 如果x的位n被设置,返回True,如果没有设置,返回False。 -
c_div(…)
c_div(x, y) 返回x除以y的商,商被四舍五入到+Inf(上限舍入)。 -
c_div_2exp(…)
c_div_2exp(x, n) 返回 x 除以 2**n 的商。x必须是一个整数,n必须>0。 -
c_divmod(…)
c_divmod(x, y) 返回 x 除以 y 的商和余数。商被向 +Inf 四舍五入(上限四舍五入),余数将具有 y 的相反符号。 -
c_divmod_2exp(…)
c_divmod_2exp(x ,n) 返回x除以2**n的商和剩余部分。商被四舍五入到+Inf(上限四舍五入),余数将是负数或零。 -
c_mod(…)
c_mod(x, y) 返回 x 除以 y 的余数,余数将与 y 的符号相反。 -
c_mod_2exp(…)
c_mod_2exp(x, n) 返回 x 除以 2**n 的余数。余数将是负数。x必须是整数,n必须>0。 -
comb(…)
comb(x, n) 返回 x 的组合数,每次取 n。 -
digits(…)
digits(x[, base=10]) 返回一个代表 x 的小数点的字符串。 -
div(…)
div(x, y) 返回 x / y。结果类型取决于输入类型。 -
divexact(…)
divexact(x, y) 返回 x 除以 y 的商,比标准除法更快,但要求余数为零 -
divm(…)
divm(a, b, m) 返回x,使得b * x == a modulo m. 如果不存在这样的值x,则引发ZeroDivisionError异常。 -
f_div(…)
f_div(x, y) 返回x除以y的商,商被四舍五入到-Inf(四舍五入),x和y必须是整数。 -
f_div_2exp(…)
f_div_2exp(x, n) 返回 x 除以 2**n 的商。x必须是一个整数,n必须>0。 -
f_divmod(…)
f_divmod(x, y) 返回x除以y的商和余数。商被向-Inf方向四舍五入(底限四舍五入),余数的符号与y相同。 -
f_divmod_2exp(…)
f_divmod_2exp(x, n) 返回x除以2**n后的商和余数。商被四舍五入到-Inf(四舍五入),余数将是正数。 -
f_mod(…)
f_mod(x, y) 返回 x 除以 y 的余数,余数的符号与 y 相同。 -
f_mod_2exp(…)
f_mod_2exp(x, n) 返回 x 除以 2**n 的余数。余数将是正数。x必须是整数,n必须>0。 -
fac(…)
fac(n) 返回 n 的精确阶乘。使用factorial()来获得浮点的近似值。 -
fib(…)
fib(n) 返回第n个斐波那契数。 -
fib2(…)
fib2(n) 返回一个包含第(n-1)个和第(n)个斐波那契数的 2 元组。 -
gcd(…)
gcd(a, b) 返回整数 a 和 b 的最大公除数。 -
gcdext(…)
gcdext(a, b) 返回一个 3 元组(g, s, t),使得
g == gcd(a, b) and g == a * s + b * t -
hamdist(…)
hamdist(x, y) 返回整数x和y之间的汉明距离(位数不同的位点数量)。 -
invert(…)
invert(x, m) 返回y,使x * y == 1 modulo m,如果不存在这样的y,则为0。 -
iroot(…)
iroot(x,n) 返回一个 2 元组(y, b),使得 y 是 x 的第 n 个整数根,如果根是精确的,则 b 为 True. x 必须 >= 0,n 必须 >0。 -
iroot_rem(…)
iroot_rem(x,n) 返回一个 2 元组(y, r),使得 y 是 x 的第 n 个整数根,并且 x = y**n + r. x 必须 >= 0,n 必须 >0。 -
is_even(…)
is_even(x) 如果x是偶数,返回True,否则返回False。 -
is_odd(…)
is_odd(x) 如果x是奇数,则返回True,否则返回False。 -
is_power(…)
is_power(x) 如果x是一个完美的幂,返回True,否则返回False。 -
is_prime(…)
is_prime(x[, n=25]) 如果x可能是素数,返回True。如果x肯定是质数,则返回False。x被检查为小除数,最多可进行n次Miller-Rabin测试。实际进行的测试可能会根据使用的GMP或MPIR的版本而有所不同。 -
is_square(…)
is_square(x) 如果x是一个完全平方,返回True,否则返回False。 -
isqrt(…)
isqrt(x) 返回一个整数x的整数平方根,x必须>=0。 -
isqrt_rem(…)
isqrt_rem(x) 返回一个2元组(s, t),使得s = isqrt(x),t = x - s * s. x必须>= 0。 -
jacobi(…)
jacobi(x, y) 返回雅可比符号(x | y)。 -
kronecker(…)
kronecker(x, y)返回克朗克-雅可比符号(x | y)。 -
lcm(…)
lcm(a, b) 返回整数 a 和 b 的最小公倍数。 -
legendre(…)
legendre(x, y) 返回 Legendre 符号 (x | y),假设 y 是奇数素数。 -
lucas(…)
lucas(n)返回第n个Lucas数。 -
lucas2(…)
lucas2(n)返回一个包含第(n-1)个和第n个卢卡斯数的2元组。 -
mpz(…)
mpz()返回一个设置为0的新mpz对象。
mpz(n) 从一个数值n返回一个新的mpz对象,如果n不是一个整数,它将被截断为一个整数。
mpz(s[, base=0]) 从一个由指定基数的数字组成的字符串s返回一个新的mpz对象。如果base=0,那么二进制、八进制或十六进制的Python字符串会被识别为前导0b、0o或0x字符。否则,字符串将被假定为十进制。基数的范围在2和62之间。 -
mpz_random(…)
mpz_random(random_state, n) 返回一个在0和n-1之间的均匀分布的随机整数。参数random_state必须先由random_state()创建。 -
mpz_rrandomb(…)
mpz_rrandomb(random_state, b)返回一个介于0和2b - 1之间的随机整数,在其二进制表示中具有长序列的0和1。参数random_state必须先由random_state()创建。
mpz_urandomb(…)
mpz_urandomb(random_state, b)返回一个在0和2b - 1之间的均匀分布的随机整数,参数random_state必须先由random_state()创建。 -
mul(…)
mul(x, y) 返回x * y。结果类型取决于输入类型。 -
next_prime(…)
next_prime(x) 返回下一个可能的质数 > x。 -
num_digits(…)
num_digits(x[, base=10]) 返回代表x的绝对值的字符串的长度,以弧度为基准。如果基数是2的幂,结果是正确的。对于其他基数,结果通常是正确的,但可能是1太大。基数范围在2和62之间,包括在内。 -
popcount(…)
popcount(x) 返回x中值为1的比特数。如果x<0,值为1的比特数是无限的,所以在这种情况下返回-1。 -
powmod(…)
powmod(x, y, m) 返回 (x ** y) mod m. 指数y可以是负数,如果x的倒数mod m存在,将返回正确的结果。否则,会产生一个ValueError。 -
remove(…)
remove(x, f) 将尽可能多地从x中去除因子f,并返回一个2元组(y, m),其中y = x // (f ** m),f不除以y。 -
sub(…)
sub(x, y)返回x - y。结果类型取决于输入类型。 -
t_div(…)
t_div(x, y) 返回x除以y的商,该商被四舍五入为零(截断)。 -
t_div_2exp(…)
t_div_2exp(x, n) 返回 x 除以 2**n 的商。该商被四舍五入为零(截断),n必须>0。 -
t_divmod(…)
t_divmod(x, y) 返回x除以y的商和余数,商被四舍五入为零(截断),余数与x的符号相同。 -
t_divmod_2exp(…)
t_divmod_2exp(x, n) 返回x除以2**n的商和余数。商被四舍五入为零(截断),余数的符号与x相同。 -
t_mod(…)
t_mod(x, y) 返回x除以y的余数,余数的符号与x相同。 -
t_mod_2exp(…)
t_mod_2exp(x, n) 返回 x 除以 2**n 的余数。余数的符号与x相同。x必须是一个整数,n必须>0。