Đây là thử thách đầu tiên của tôi!
Lý lịch
Số hoàn hảo là một số nguyên dương, bằng tổng của tất cả các ước của nó, ngoại trừ chính nó.
Vì vậy, 6
là số hoàn hảo, kể từ 1 + 2 + 3 = 6
.
Mặt khác 12
thì không, bởi vì 1 + 2 + 3 + 4 + 6 = 16 != 12
.
Bài tập
Nhiệm vụ của bạn rất đơn giản, hãy viết một chương trình, trong đó sẽ đưa n
ra một trong những thông báo sau:
Tôi là một số hoàn hảo, bởi vì
d1 + d2 + ... + dm = s == n
tôi không phải là một số hoàn hảo, bởi vìd1 + d2 + ... + dm = s [<>] n
Trường hợp
d1, ... dm
tất cả các ước của n
ngoại trừ n
.
s
là tổng của tất cả các ước d1, ..., dm
(một lần nữa, không có n
).
[<>]
là <
(nếu s < n
) hoặc >
(nếu s > n
).
Ví dụ
Cho n
là 6
: "Tôi là một số hoàn hảo, bởi vì 1 + 2 + 3 = 6 == 6"
cho n
là 12
: "Tôi không phải là một số hoàn hảo, bởi vì 1 + 2 + 3 + 4 + 6 = 16> 12"
cho n
hạnh phúc 13
: "Tôi không phải là một số hoàn hảo, vì 1 = 1 <13"
Quy tắc
n
không lớn hơn tiêu chuẩn ngôn ngữ của bạnint
.- Bạn có thể đọc
n
từ đầu vào tiêu chuẩn, từ các đối số dòng lệnh hoặc từ một tệp. - Thông báo đầu ra phải được in trên đầu ra tiêu chuẩn và không có ký tự bổ sung nào có thể xuất hiện trong đầu ra (nó có thể có khoảng trắng ở cuối hoặc dòng mới)
- Bạn không được sử dụng bất kỳ chức năng tích hợp hoặc thư viện nào sẽ giải quyết nhiệm vụ (hoặc phần chính của nó) cho bạn. Không
GetDivisors()
hoặc một cái gì đó như thế. - Tất cả các sơ hở tiêu chuẩn khác áp dụng.
Người chiến thắng
Đây là mã golf để mã ngắn nhất tính theo byte thắng!
=
và ==
trong cùng một phương trình? Điều đó không có ý nghĩa. Nó phải là d1 + d2 + ... + dm = s = n
IMO.