From 58b9f0bb0cf4827eec13ca2129f8936497edc7e3 Mon Sep 17 00:00:00 2001 From: shellhub Date: Fri, 11 Oct 2019 16:44:33 +0800 Subject: [PATCH] perfect number --- Maths/PerfectNumber.java | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Maths/PerfectNumber.java diff --git a/Maths/PerfectNumber.java b/Maths/PerfectNumber.java new file mode 100644 index 00000000..ceaf0b2b --- /dev/null +++ b/Maths/PerfectNumber.java @@ -0,0 +1,33 @@ +package Maths; + +/** + * In number theory, a perfect number is a positive integer that is equal to the sum of + * its positive divisors, excluding the number itself. For instance, 6 has divisors 1, 2 and 3 + * (excluding itself), and 1 + 2 + 3 = 6, so 6 is a perfect number. + *

+ * link:https://en.wikipedia.org/wiki/Perfect_number + *

+ */ +public class PerfectNumber { + public static void main(String[] args) { + assert isPerfectNumber(6); /* 1 + 2 + 3 == 6 */ + assert !isPerfectNumber(8); /* 1 + 2 + 4 != 8 */ + assert isPerfectNumber(28); /* 1 + 2 + 4 + 7 + 14 == 28 */ + } + + /** + * Check if {@code number} is perfect number or not + * + * @param number the number + * @return {@code true} if {@code number} is perfect number, otherwise false + */ + public static boolean isPerfectNumber(int number) { + int sum = 0; /* sum of its positive divisors */ + for (int i = 1; i < number; ++i) { + if (number % i == 0) { + sum += i; + } + } + return sum == number; + } +}