Inspirado por esta pergunta sobre matemática.
Deixe Fatorização privilegiada de um número, n , ser representada como P (n) = 2 a x 3 b x 5 c x ... .
(Usando x como o sinal de multiplicação.)
Em seguida, o número de divisores de n pode ser representada como se D (n) = (a + 1) x (b + 1) x (c + 1) ... .
Assim, podemos facilmente dizer que o número de divisores de 2n é D (2n) = (a + 2) x (b + 1) x (c + 1) ... ,
o número de divisores de 3n é D (3n ) = (a + 1) x (b + 2) x (c + 1) ... ,
e assim por diante.
Desafio:
Escreva um programa ou função que use essas propriedades para calcular n , considerando determinadas entradas do divisor.
Entrada:
Um conjunto de números inteiros, vamos chamá-los de w, x, y, z , com todas as seguintes definições:
- todas as entradas são maiores que 1 -
w, x, y, z > 1
- x e z são distintos -
x<>z
- x e z são primos -
P(x)=x
,D(x)=2
eP(z)=z
,D(z)=2
- w é o número de divisores de xn -
D(xn)=w
- y é o número de divisores de zn -
D(zn)=y
Para o problema fornecido na pergunta vinculada, um exemplo de entrada poderia ser (28, 2, 30, 3)
. Isso se traduz em D(2n)=28
e D(3n)=30
, com n=864
.
Resultado:
Um único inteiro, n , que satisfaz as definições e restrições de entrada acima. Se vários números se ajustarem às definições, produza o menor. Se esse número inteiro não for possível, imprima um valor de falsey .
Exemplos:
(w, x, y, z) => output
(28, 2, 30, 3) => 864
(4, 2, 4, 5) => 3
(12, 5, 12, 23) => 12
(14, 3, 20, 7) => 0 (or some other falsey value)
(45, 13, 60, 11) => 1872
(45, 29, 60, 53) => 4176
Regras:
- Aplicam-se regras padrão de código de golfe e restrições de brechas .
- Aplicam- se regras de entrada / saída padrão .
- Os números de entrada podem estar em qualquer ordem - especifique na sua resposta qual ordem você está usando.
- Os números de entrada podem estar em qualquer formato adequado: espaço separado, matriz, função separada ou argumentos de linha de comando, etc. - sua escolha.
- Da mesma forma, se a saída para STDOUT, o espaço em branco circundante, a nova linha à direita etc. forem opcionais.
- A análise de entrada e a formatação da saída não são os recursos interessantes desse desafio.
- No interesse da complexidade sadia e do excesso de números inteiros, o número do desafio n terá restrições tais que
1 < n < 100000
- ou seja, você não precisa se preocupar com possíveis respostas fora desse intervalo.
Relacionado
fonte
Respostas:
Geléia ,
1716 bytesEsta é uma solução de força bruta que tenta todos os valores possíveis até 100.000. Experimente online!
Versão não concorrente
A versão mais recente do Jelly possui uma correção de bug que permite reduzir o código acima para 15 bytes .
Experimente online!
Como funciona
fonte