Это мой первый вызов!
Задний план
Совершенное число - это положительное целое число, равное сумме всех его делителей, кроме него самого.
Так 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
ИМО.