Nota: questa sfida è stata pubblicata sulla sandbox .
introduzione
Questa sfida è ispirata a Putnam B1 del 2009 , un problema in una competizione di matematica universitaria. Il problema è il seguente:
Mostra che ogni numero razionale positivo può essere scritto come un quoziente di prodotti di fattoriali di numeri primi (non necessariamente distinti). Per esempio,
Sfida
La tua sfida è quella di prendere una coppia di numeri interi relativamente primi positivi, che rappresentano il numeratore e il denominatore di un numero razionale positivo (o solo il numero razionale stesso) come input e produrre due elenchi (o array, ecc.) Di numeri primi in modo che il numero razionale immesso è uguale al rapporto tra il prodotto dei fattoriali dei numeri primi nella prima lista e il prodotto dei fattoriali dei numeri primi nella seconda lista.
Appunti
- Non ci possono essere numeri primi che contenessero sia nel primo elenco che nel secondo elenco; tuttavia, un numero primo può apparire quante volte si desidera in entrambi gli elenchi.
- Si può presumere che gli ingressi siano (non rigorosamente) tra 1 e 65535; tuttavia, non si può presumere che i fattoriali dei numeri che sarà necessario produrre siano compresi in questo intervallo.
Esempio di input e output
Ecco alcuni esempi di input e output legali.
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],[]
Gli input (2,2), (0,3), (3,0), (3,6) e (1.65536) sono input illegali (cioè il tuo programma non deve comportarsi in alcun modo su di essi ). Ecco alcuni esempi di output illegali:
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)
punteggio
Questo è code-golf , quindi vince il punteggio più basso in byte!
10/9
piuttosto che una coppia di numeri 10
e 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!)
.