# fmpz – integers¶

class flint.fmpz(val=None)

The fmpz type represents an arbitrary-size integer.

>>> fmpz(3) ** 25
847288609443

bell_number(type cls, ulong n)

Returns the Bell number $$B_n$$ as an fmpz.

>>> fmpz.bell_number(10)
115975

bin_uiui(type cls, ulong n, ulong k)

Returns the binomial coefficient $${n \choose k}$$ as an fmpz.

bit_length(self)
divisor_sigma(n, k)

Returns the divisor sum $$\sigma_k(n)$$ as an fmpz.

>>> fmpz(60).divisor_sigma(0)
12
>>> fmpz(60).divisor_sigma(1)
168
>>> fmpz(60).divisor_sigma(10)
605263138639095300

euler_number(type cls, ulong n)

Returns the Euler number $$E_n$$ as an fmpz.

>>> fmpz.euler_number(10)
-50521

euler_phi(n)

Returns the Euler totient function $$\varphi(n)$$ as an fmpz.

>>> fmpz(60).euler_phi()
16
>>> fmpz(3**10).euler_phi()
39366

fac_ui(type cls, ulong n)

Returns the factorial $$n!$$ as an fmpz.

>>> fmpz.fac_ui(10)
3628800

factor(self)

Factors self into pseudoprimes, returning a list of (prime, exp) pairs. The sign is ignored.

>>> fmpz(5040).factor()
[(2, 4), (3, 2), (5, 1), (7, 1)]
>>> fmpz(10**35 + 1).factor()
[(11, 1), (9091, 1), (909091, 1), (4147571, 1), (265212793249617641, 1)]
>>> len(fmpz.fac_ui(1000).factor())
168


Warning: factoring large integers can be slow unless all prime factors are small.

fib_ui(type cls, ulong n)

Returns the Fibonacci number $$F_n$$ as an fmpz.

>>> fmpz.fib_ui(10)
55

gcd(self, other)

Returns the greatest common divisor of self and other.

>>> fmpz(30).gcd(45)
15

moebius_mu(n)

Returns the Moebius function $$\mu(n)$$ as an fmpz.

>>> [fmpz(n).moebius_mu() for n in range(10)]
[0, 1, -1, -1, 0, -1, 1, -1, 0, 0]

partitions_p(n)

Returns $$p(n)$$, the number of partitions of $$n$$, as an fmpz.

>>> [fmpz(n).partitions_p() for n in range(8)]
[1, 1, 2, 3, 5, 7, 11, 15]
>>> fmpz(100).partitions_p()
190569292
>>> len(str(fmpz(10**9).partitions_p()))
35219


The partition function grows rapidly. On a 32-bit system, $$n$$ must not be larger than about $$10^{16}$$. On a 64-bit system, $$n$$ must not be larger than about $$10^{20}$$. For large $$n$$, this function benefits from setting ctx.threads = 2 on multicore systems.

primorial_ui(type cls, ulong n)

Returns the product of all primes less than or equal to n (n primorial) as an fmpz.

>>> fmpz.primorial_ui(10)
210

repr(self)
rising(s, ulong n)

Returns the rising factorial $$s (s+1) \cdots (s+n-1)$$ as an fmpz.

>>> fmpz(10).rising(5)
240240

stirling_s1(type cls, ulong n, ulong k)

Returns the Stirling number of the first kind $$S_1(n,k)$$ as an fmpz.

>>> fmpz.stirling_s1(10,5)
-269325

stirling_s2(type cls, ulong n, ulong k)

Returns the Stirling number of the second kind $$S_2(n,k)$$ as an fmpz.

>>> fmpz.stirling_s2(10,5)
42525

str(self, int base=10, long condense=0)

Converts self to a string, optionally in a non-decimal base and optionally showing only leading and trailing digits.

>>> (fmpz(3) ** 100).str()
'515377520732011331036461129765621272702107522001'
>>> (fmpz(3) ** 100).str(base=3, condense=10)
'1000000000{...81 digits...}0000000000'