Este es mi primer desafío!
Fondo
El número perfecto es un entero positivo, que es igual a la suma de todos sus divisores, excepto a sí mismo.
Entonces 6
es un número perfecto, ya que 1 + 2 + 3 = 6
.
Por otro lado 12
no lo es, porque 1 + 2 + 3 + 4 + 6 = 16 != 12
.
Tarea
Su tarea es simple, escriba un programa que, por supuesto n
, imprima uno de estos mensajes:
Soy un número perfecto, porque
d1 + d2 + ... + dm = s == n
no soy un número perfecto, porqued1 + d2 + ... + dm = s [<>] n
¿Dónde
d1, ... dm
están todos los divisores de n
excepto n
?
s
es la suma de todos los divisores d1, ..., dm
(de nuevo, sin n
).
[<>]
es <
(if s < n
) o >
(if s > n
).
Ejemplos
Por n
ser 6
: "Soy un número perfecto, porque 1 + 2 + 3 = 6 == 6"
Por n
ser 12
: "No soy un número perfecto, porque 1 + 2 + 3 + 4 + 6 = 16> 12"
Por n
ser 13
: "No soy un número perfecto, porque 1 = 1 <13"
Reglas
n
no es más grande que el estándar de tu idiomaint
.- Puede leer
n
desde la entrada estándar, desde argumentos de línea de comandos o desde un archivo. - El mensaje de salida debe imprimirse en la salida estándar y no pueden aparecer caracteres adicionales en la salida (puede tener espacios en blanco al final o nueva línea)
- No puede usar ninguna función incorporada o de biblioteca que resuelva la tarea (o su parte principal) por usted. No
GetDivisors()
o algo así. - Se aplican todas las demás lagunas estándar .
Ganador
Este es el código de golf, ¡el código más corto en bytes gana!
=
y ==
en la misma ecuación? Eso no tiene sentido. Debería ser de la d1 + d2 + ... + dm = s = n
OMI.