Nota: este desafio foi publicado na sandbox .
Introdução
Esse desafio é inspirado em 2009 Putnam B1 , um problema em um concurso de graduação em matemática. O problema é o seguinte:
Mostre que todo número racional positivo pode ser escrito como um quociente de produtos de fatoriais de primos (não necessariamente distintos). Por exemplo,
Desafio
Seu desafio é pegar um par de números inteiros positivos relativamente primos, representando o numerador e o denominador de um número racional positivo (ou apenas o próprio número racional) como entrada, e gerar duas listas (ou matrizes, etc.) de números primos para que o número racional inserido é igual à razão entre o produto dos fatoriais dos primos na primeira lista e o produto dos fatoriais dos primos na segunda lista.
Notas
- Pode não haver números primos contidos na primeira e na segunda lista; no entanto, um primo pode aparecer quantas vezes se desejar em qualquer lista.
- As entradas podem ser assumidas para cada uma estar (sem estrita) entre 1 e 65535; no entanto, não se pode presumir que os fatoriais dos números que você precisará fornecer estarão nesse intervalo.
Exemplo de entrada e saída
Aqui estão exemplos de entradas e saídas legais.
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],[]
As entradas (2,2), (0,3), (3,0), (3,6) e (1.65536) são entradas ilegais (ou seja, seu programa não precisa se comportar de nenhuma maneira específica nelas ) Aqui estão alguns exemplos de saídas ilegais:
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)
Pontuação
Isso é código-golfe , então a pontuação mais baixa em bytes vence!
10/9
e não como um par de números 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!)
.