Integer factorization using PARI

AUTHORS:

  • Jeroen Demeyer (2015)

sage.rings.factorint_pari.factor_using_pari(n, int_=False, debug_level=0, proof=None)[source]

Factor this integer using PARI.

This function returns a list of pairs, not a Factorization object. The first element of each pair is the factor, of type Integer if int_ is False or int otherwise, the second element is the positive exponent, of type int.

INPUT:

  • int_ – (default: False), whether the factors are of type int instead of Integer

  • debug_level – (default: 0), debug level of the call to PARI

  • proof – (default: None), whether the factors are required to be proven prime; if None, the global default is used

OUTPUT: list of pairs

EXAMPLES:

sage: factor(-2**72 + 3, algorithm='pari')  # indirect doctest
-1 * 83 * 131 * 294971519 * 1472414939
>>> from sage.all import *
>>> factor(-Integer(2)**Integer(72) + Integer(3), algorithm='pari')  # indirect doctest
-1 * 83 * 131 * 294971519 * 1472414939
factor(-2**72 + 3, algorithm='pari')  # indirect doctest

Check that PARI’s debug level is properly reset (Issue #18792):

sage: alarm(0.5); factor(2^1000 - 1, verbose=5)
Traceback (most recent call last):
...
AlarmInterrupt
sage: pari.get_debug_level()
0
>>> from sage.all import *
>>> alarm(RealNumber('0.5')); factor(Integer(2)**Integer(1000) - Integer(1), verbose=Integer(5))
Traceback (most recent call last):
...
AlarmInterrupt
>>> pari.get_debug_level()
0
alarm(0.5); factor(2^1000 - 1, verbose=5)
pari.get_debug_level()