Dado un polinomio, determina si es primo.
Un polinomio es ax^n + bx^(n-1) + ... + dx^3 + ex^2 + fx + g
, donde cada término es un número constante (el coeficiente) multiplicado por una potencia entera no negativa de x
. La potencia más alta con un coeficiente distinto de cero se llama grado. Para este desafío, solo consideramos polinomios de al menos grado 1. Es decir, cada polinomio contiene algunos x
. Además, solo usamos polinomios con coeficientes enteros.
Los polinomios se pueden multiplicar. Por ejemplo, (x+3)(2x^2-2x+3)
igual 2x^3+4x^2-3x+9
. Por lo tanto, 2x^3+4x^2-3x+9
puede factorizarse en x+3
y 2x^2-2x+3
, por lo tanto, es compuesto.
Otros polinomios no se pueden factorizar. Por ejemplo, 2x^2-2x+3
no es el producto de dos polinomios (ignorando polinomios constantes o aquellos con coeficientes no enteros). Por lo tanto, es primo (también conocido como irreducible).
Reglas
- La entrada y la salida pueden realizarse de cualquier forma estándar.
- La entrada puede ser una cadena
2x^2-2x+3
, una lista de coeficientes{2,-2,3}
o cualquier medio similar. - La salida es un valor verdadero si es primo o un valor falso si es compuesto. Debe proporcionar el mismo valor de verdad para todos los números primos y el mismo valor de falsey para todos los polinomios compuestos.
- La entrada será de al menos grado 1 y como máximo de grado 10.
- No puede usar herramientas integradas para la factorización (de enteros o expresiones) o para resolver ecuaciones.
Ejemplos
Cierto - primo
x+3
-2x
x^2+x+1
x^3-3x-1
-2x^6-3x^4+2
3x^9-8x^8-3x^7+2x^3-10
Falso - compuesto
x^2
x^2+2x+1
x^4+2x^3+3x^2+2x+1
-3x^7+5x^6-2x
x^9-8x^8+7x^7+19x^6-10x^5-35x^4-14x^3+36x^2+16x-12
Respuestas:
Mathematica, 224 bytes
Explicacion :
El método de Kronecker se usa aquí. Este método genera ciertos polinomios de menor grado y prueba si existe un factor del polinomio original.
Casos de prueba :
Se necesitan 14 segundos en mi computadora portátil para concluir que
3x^9-8x^8-3x^7+2x^3-10
es excelente.fuente
PARI / GP, 16 bytes, barato como el infierno
Por alguna razón, esto no fue rechazado (notando que el comando no factoriza ni resuelve ecuaciones):
Caso de prueba
devuelve
1
(verdadero). Los otros ejemplos funcionan de manera similar.Pero para mostrar que esto se puede resolver de la manera difícil, aquí hay una solución completa.
Menos barato, pero sloooooooooow
Realmente no tiene sentido jugar al golf.
Editar: Los comentaristas han señalado que el primer método puede ser rechazado por el buen gusto, el espíritu de las reglas, la Convención de Ginebra, las reglas de laguna legal, etc. No estoy de acuerdo, pero en cualquier caso publiqué la segunda versión junto con el primero y ciertamente parece aceptable.
fuente
x^4+1
(que es famoso por ser mod reducible cualquier primo) es irreducible en 86 milisegundos. Si nada más, otros pueden adaptar y jugar golf esta versión.