Dado um número inteiro positivo n> 1, determine quantos números podem ser feitos adicionando números inteiros maiores que 1, cujo produto é n . Por exemplo, se n = 24 , podemos expressar n como um produto das seguintes maneiras
24 = 24 -> 24 = 24
24 = 12 * 2 -> 12 + 2 = 14
24 = 6 * 2 * 2 -> 6 + 2 + 2 = 10
24 = 6 * 4 -> 6 + 4 = 10
24 = 3 * 2 * 2 * 2 -> 3 + 2 + 2 + 2 = 9
24 = 3 * 4 * 2 -> 3 + 4 + 2 = 9
24 = 3 * 8 -> 3 + 8 = 11
Podemos obter os seguintes números desta maneira:
24, 14, 11, 10, 9
Isso é um total de 5 números, então nosso resultado é 5.
Tarefa
Escreva um programa ou função que aceite n como entrada e retorne o número de resultados que podem ser obtidos dessa maneira.
Esta é uma questão de código-golfe, para que as respostas sejam pontuadas em bytes, com menos bytes sendo melhores.
Sequência OEIS
code-golf
math
factoring
code-challenge
sequence
polyglot
rosetta-stone
code-golf
string
browser
code-golf
date
code-golf
base-conversion
code-challenge
cops-and-robbers
hello-world
code-golf
cops-and-robbers
hello-world
Post Rock Garf Hunter
fonte
fonte
2,2,3,3 -> 10
,2,6,3 -> 11
,2,2,9 -> 13
,12,3 -> 15
,2,18 -> 20
,36 -> 36
(2*3)+(2*3)=12
deve estar na lista.Respostas:
Braquilog , 8 bytes
Experimente online!
Explicação
Não sei ao certo por que
~×
apenas produz listas com elementos acima de 1, mas parece que o faz, o que funciona muito bem nesse desafio.fonte
Gaia ,
91413 bytesBug corrigido ao custo de 5 bytes, graças a Jonathan Allan, e então 1 byte jogou.
Experimente online! ou tente como uma suíte de testes
Explicação
fonte
[6 6]
Geléia ,
11 1514 bytes+4 bytes corrigindo um bug (talvez uma maneira melhor?)
-1 byte abusando da simetria
Um link monádico recebendo e retornando números inteiros positivos
Experimente online! ou veja uma suíte de testes
Quão?
Atualizando ...
fonte
Python 2 , 206 bytes
Experimente online!
Explicação
fonte
Mathematica, 110 bytes
fonte
JavaScript (ES6) 107 bytes
Ungolfed:
Casos de teste:
Mostrar snippet de código
Para verificar se a função calcula as somas corretas, podemos gerar as chaves do objeto em vez de
t
:fonte
Python 3 , 251 bytes
Experimente online!
O design é básico:
fatorize n em seus fatores primos (um fator primo pode aparecer várias vezes
16 -> [2,2,2,2]
:). Essa é a funçãof
.calcule as partições da lista de fatores primos e multiplique os fatores em cada partição. As partições são encontradas em /programming//a/30134039 e os produtos são computados em tempo real. Essa é a função
t
.A função final obtém os produtos de cada partição de n e os soma, obtendo o número de valores diferentes.
O resultado para
2310=2*3*5*7*11
é49
.Edição : Talvez precise de correção, mas não tenho tempo para olhar agora (estou com pressa). Dica: o resultado está correto
2310=2*3*5*7*11
? Acho que não.EDIT2 : correção enorme. Veja acima. A versão anterior (de buggy) era: Experimente online!
f
calcula os fatores (, com um em(0, n)
vez de(1, n)
como primeiro elemento.O lambda divide cada fator em "subfatores" e soma esses "subfatores".
fonte