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 6es un número perfecto, ya que 1 + 2 + 3 = 6.
Por otro lado 12no 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, ... dmestán todos los divisores de nexcepto n?
ses la suma de todos los divisores d1, ..., dm(de nuevo, sin n).
[<>]es <(if s < n) o >(if s > n).
Ejemplos
Por nser 6: "Soy un número perfecto, porque 1 + 2 + 3 = 6 == 6"
Por nser 12: "No soy un número perfecto, porque 1 + 2 + 3 + 4 + 6 = 16> 12"
Por nser 13: "No soy un número perfecto, porque 1 = 1 <13"
Reglas
nno es más grande que el estándar de tu idiomaint.- Puede leer
ndesde 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 = nOMI.