Números semiperfeitos
Um número semiperfeito / pseudooperfeito é um número inteiro igual à soma de uma parte ou de todos os seus divisores (exceto ele próprio). Números iguais à soma de todos os seus divisores são perfeitos.
Divisors of 6 : 1,2,3
6 = 1+2+3 -> semiperfect (perfect)
Divisors of 28 : 1,2,4,7,14
28 = 14+7+4+2+1 -> semiperfect (perfect)
Divisors of 40 : 1,2,4,5,8,10,20
40 = 1+4+5+10+20 or 2+8+10+20 -> semiperfect
Primitivo
Um número semiperfeito primitivo é um número semiperfeito sem divisores semiperfeitos (exceto ele mesmo :))
Divisors of 6 : 1,2,3
6 = 1+2+3 -> primitive
Divisors of 12 : 1,2,3,4,6
12 = 2+4+6 -> semiperfect
Como referência, use a série OEIS A006036 para números semiperfeitos primitivos e A005835 para semiperfeitos.
Objetivo
Escreva um programa ou uma função em qualquer idioma. Ele terá como entrada um número n como parâmetro de função ou na alternativa mais próxima de STDIN / seu idioma e exibirá todos os números semi-perfeitos primitivos de 1 a n (inclusive).
A saída deve ser formatada como 6[separator]20[separator]28[separator]88...
onde [separador] é como nova linha, um espaço ou uma vírgula. Não deve haver um separador inicial nem final.
Editar: você pode deixar uma nova linha à direita
Exemplos
entrada :
5
resultado :
entrada :
20
resultado :
6
20
entrada :
100
resultado :
6 20 28 88
Pontuação
Isso é código-golfe, então o código mais curto em bytes vence.
Não tente nos enganar com brechas, por favor :).
Ficaria feliz que você pudesse deixar uma explicação sobre seu código de golfe assim que achar que já terminou de jogar!
K
aY
construirY
, que é necessário em outros lugares. No entanto, eu poderia fazer a impressão separadamente, como emaYKK
vez deeaYK
. É 4 bytes de qualquer maneira, no entanto.Julia,
161149 bytesIsso cria uma função sem nome que aceita um número inteiro como entrada e imprime os números em STDOUT separados por uma nova linha. Para chamá-lo, dê um nome, por exemplo
f=n->...
.Ungolfed + explicação:
Exemplos:
fonte
JavaScript ( ES6 ) 172
Execute o trecho abaixo para testar
fonte
CJam, 54 bytes
Essa solução parece um pouco estranha, mas como houve poucas respostas e nenhuma no CJam, pensei em publicá-la de qualquer maneira:
Uma boa parte do incremento sobre a solução Pyth publicada vem do fato de que, até onde pude encontrar, o CJam não possui um operador para enumerar todos os subconjuntos de um conjunto. Então, foi preciso algum trabalho para concluir isso com os operadores disponíveis. Claro, se realmente houver um operador simples que eu perdi, ficarei meio bobo. :)
Explicação:
Experimente online
fonte
PHP, 263 bytes
Experimente online!
Expandido
fonte
Gelatina , 22 bytes
Experimente online!
Explicação
fonte