Це мій перший виклик!
Фон
Ідеальне число - це додатне ціле число, яке дорівнює сумі всіх його дільників, крім самого себе.
Так 6
це досконале число, так як 1 + 2 + 3 = 6
.
З іншого боку 12
- ні, тому що 1 + 2 + 3 + 4 + 6 = 16 != 12
.
Завдання
Ваше завдання просте: написати програму, яка дасть змогу n
надрукувати одне з цих повідомлень:
Я ідеальне число, тому що
d1 + d2 + ... + dm = s == n
я не ідеальне число, тому щоd1 + d2 + ... + dm = s [<>] n
Де
d1, ... dm
все подільники , n
за винятком n
.
s
- це сума всіх дільників d1, ..., dm
(знову ж таки, без n
).
[<>]
є або <
(якщо s < n
), або >
(якщо s > n
).
Приклади
Для n
того, щоб бути 6
: "Я ідеальне число, тому що 1 + 2 + 3 = 6 == 6"
Для n
того, щоб бути 12
: "Я не є ідеальним числом, тому що 1 + 2 + 3 + 4 + 6 = 16> 12"
Для n
того, щоб бути 13
: "Я не ідеальне число, тому що 1 = 1 <13"
Правила
n
не перевищує стандарт вашої мовиint
.- Ви можете читати
n
зі стандартного вводу, з аргументів командного рядка або з файлу. - Вихідне повідомлення має бути надруковано на стандартному виході, і жодні додаткові символи не можуть з’являтися у висновку (у ньому може бути пробіл пробілу чи новий рядок)
- Ви не можете використовувати будь-які вбудовані або бібліотечні функції, які вирішили б завдання (або його основну частину) для вас. Ні,
GetDivisors()
чи щось подібне. - Застосовуються всі інші стандартні лазівки .
Переможець
Це код-гольф, тому найкоротший код у байтах виграє!
=
і ==
в тому ж рівнянні? В цьому немає сенсу. Це має бути d1 + d2 + ... + dm = s = n
ІМО.