Este é o meu primeiro desafio!
fundo
Número perfeito é um número inteiro positivo, que é igual à soma de todos os seus divisores, exceto ele próprio.
Então 6é o número perfeito, desde então 1 + 2 + 3 = 6.
Por outro lado 12, não é, porque 1 + 2 + 3 + 4 + 6 = 16 != 12.
Tarefa
Sua tarefa é simples, escreva um programa que, por ncerto, imprima uma dessas mensagens:
Eu sou um número perfeito, porque
d1 + d2 + ... + dm = s == n
eu não sou um número perfeito, porqued1 + d2 + ... + dm = s [<>] n
Onde
d1, ... dmestão todos os divisores, nexceto n.
sé a soma de todos os divisores d1, ..., dm(novamente, sem n).
[<>]é <(se s < n) ou >(se s > n).
Exemplos
Por nser 6: "Eu sou um número perfeito, porque 1 + 2 + 3 = 6 == 6"
Por nser 12: "Eu não sou um número perfeito, porque 1 + 2 + 3 + 4 + 6 = 16> 12"
Por nser 13: "Eu não sou um número perfeito, porque 1 = 1 <13"
Regras
nnão é maior que o padrão do seu idiomaint.- Você pode ler
nda entrada padrão, dos argumentos da linha de comando ou de um arquivo. - A mensagem de saída deve ser impressa na saída padrão e nenhum caractere adicional pode aparecer na saída (pode haver espaço em branco à direita ou nova linha)
- Você não pode usar nenhuma função interna ou de biblioteca que resolva a tarefa (ou sua parte principal) para você. Não
GetDivisors()ou algo parecido. - Todas as outras brechas padrão se aplicam.
Vencedora
Este é o código-golfe, pelo que o código mais curto em bytes vence!
=e ==na mesma equação? Isso não faz sentido. Deve ser d1 + d2 + ... + dm = s = nIMO.