Remarque: ce défi a été publié sur le bac à sable .
introduction
Ce défi est inspiré par Putnam B1 2009 , un problème dans un concours de mathématiques de premier cycle. Le problème est le suivant:
Montrer que tout nombre rationnel positif peut être écrit comme un quotient de produits de factorielles de nombres premiers (pas nécessairement distincts). Par exemple,
Défi
Votre défi est de prendre une paire d'entiers positifs relativement premiers, représentant le numérateur et le dénominateur d'un nombre rationnel positif (ou juste le nombre rationnel lui-même) en entrée, et de sortir deux listes (ou tableaux, etc.) de nombres premiers afin que le nombre rationnel entré est égal au rapport du produit des factorielles des nombres premiers dans la première liste au produit des factorielles des nombres premiers dans la deuxième liste.
Remarques
- Il peut ne pas y avoir de nombres premiers contenus à la fois dans la première liste et dans la deuxième liste; cependant, un nombre premier peut apparaître autant de fois que l'on souhaite dans l'une ou l'autre liste.
- Les entrées peuvent être supposées être chacune (sans restriction) entre 1 et 65535; cependant, on ne peut pas supposer que les factorielles des nombres que vous devrez produire seront dans cette plage.
Exemple d'entrée et de sortie
Voici des exemples d'entrées et de sorties légales.
input=>output
10,9 => [2,5],[3,3,3]
2,1 => [2],[]
3,1 => [3],[2]
1,5 => [2,3,2],[5] (elements of a list may be in any order)
3,2 => [3],[2,2]
6,1 => [3],[]
Les entrées (2,2), (0,3), (3,0), (3,6) et (1,65536) sont des entrées illégales (c'est-à-dire que votre programme n'a pas besoin de se comporter d'une manière particulière sur elles ). Voici quelques exemples de sorties illégales:
1,2 => [2],[2,2] (2 is in both returned lists)
5,2 => [5],[2,4] (4 is not prime)
2,1 => [2],[1] (1 is not prime either)
3,2 => [3],[2] (3!/2! = 3, not 3/2)
Notation
C'est le code-golf , donc le score le plus bas en octets gagne!
10/9
plutôt que comme une paire de nombres 10
et 9
?
10/9
=[2*5]/[3*3]
=[(2!/1!) * (5!/4!)] / [(3!/2!) * (3!/2!)]
=[2! * 5! * 2! * 2!] / [3! * 3! * 1! * 4!]
=(2! * 2! * 2! *5!) / (3! * 3! * 4!)
.