Étant donné un polynôme, déterminez s'il est premier.
Un polynôme est ax^n + bx^(n-1) + ... + dx^3 + ex^2 + fx + g
, où chaque terme est un nombre constant (le coefficient) multiplié par une puissance entière non négative de x
. La puissance la plus élevée avec un coefficient non nul s'appelle le degré. Pour ce défi, nous considérons uniquement des polynômes d'au moins degré 1. Autrement dit, chaque polynôme en contient x
. De plus, nous utilisons uniquement des polynômes avec des coefficients entiers.
Les polynômes peuvent être multipliés. Par exemple, (x+3)(2x^2-2x+3)
est égal à 2x^3+4x^2-3x+9
. Ainsi, 2x^3+4x^2-3x+9
peut être pris en compte dans x+3
et 2x^2-2x+3
, il est donc composite.
D'autres polynômes ne peuvent pas être pris en compte. Par exemple, 2x^2-2x+3
n'est pas le produit de deux polynômes (en ignorant les polynômes constants ou ceux avec des coefficients non entiers). Par conséquent, il est premier (également appelé irréductible).
Règles
- L'entrée et la sortie peuvent se faire par n'importe quel moyen standard.
- L'entrée peut être une chaîne
2x^2-2x+3
, une liste de coefficients{2,-2,3}
ou tout autre moyen similaire. - La sortie est soit une valeur véridique si elle est première, soit une valeur de falsey si elle est composite. Vous devez fournir la même valeur véridique pour tous les nombres premiers et la même valeur de falsey pour tous les polynômes composites.
- L'entrée sera au moins de degré 1 et au plus de degré 10.
- Vous ne pouvez pas utiliser d'outils intégrés pour la factorisation (d'entiers ou d'expressions) ou la résolution d'équations.
Exemples
Vrai - premier
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
Faux - composite
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
Réponses:
Mathematica, 224 octets
Explication :
La méthode de Kronecker est utilisée ici. Cette méthode génère certains polynômes de degré inférieur et vérifie s'il existe un facteur du polynôme d'origine.
Cas de test :
Il faut 14 secondes sur mon ordinateur portable pour conclure que
3x^9-8x^8-3x^7+2x^3-10
c'est parfait.la source
PARI / GP, 16 octets, pas cher comme l'enfer
Pour une raison quelconque, cela n'a pas été interdit (en notant que la commande ne factorise pas ou ne résout pas l'équation):
Cas de test
renvoie
1
(vrai). Les autres exemples fonctionnent de manière similaire.Mais pour montrer que cela est résoluble à la dure, voici une solution complète.
Moins cher, mais sloooooooooow
Cela ne sert à rien de jouer au golf.
Edit: Les commentateurs ont souligné que la première méthode peut être rejetée par le bon goût, l'esprit des règles, la Convention de Genève, les règles standard des échappatoires, etc. Je ne suis pas d'accord, mais en tout cas j'ai posté la deuxième version avec le premier et certainement cela semble acceptable.
la source
x^4+1
(ce qui est célèbre pour tout mod prime) est irréductible en 86 millisecondes. Si rien d'autre ne peut s'adapter et jouer au golf cette version.