Supondo que os coeficientes de sejam inteiros ou racionais e que você deseja raízes inteiras, a abordagem mais simples é usar o teorema da raiz inteira ou racional. Consulte http://en.wikipedia.org/wiki/Rational_root_theorem
Conforme observado pelo DW, isso pode ser problemático se o coeficiente constante for difícil de ser fatorado (consulte também /math/123018/polynomial- e raízes inteiras )f
De qualquer forma, a documentação do Sage explica claramente como eles estão fazendo a pesquisa raiz: "O próximo método, que é usado se K é um domínio integral, é tentar fatorar o polinômio. Se isso der certo, para cada grau um fator a * x + b, adicionamos -b / a como raiz (desde que esse quociente esteja realmente no anel desejado) ".
Consulte http://www.sagemath.org/doc/reference/polynomial_rings/sage/rings/polynomial/polynomial_element.html .
Portanto, sua pergunta se torna: como eles fatoram polinômios com coeficientes inteiros? Aparentemente, Sage está chamando a NTL para fazer isso (consulte http://www.shoup.net/ntl/doc/ZZXFactoring.txt para obter detalhes sobre NTL).
Se você quiser um método assintoticamente eficiente, consulte o método de Lenstra, Lenstra e Lovasz ( https://openaccess.leidenuniv.nl/handle/1887/3810 ).