|
Perfect Number
A perfect number is a number for which the sum of its divisors, except itself equals the number.
|
package com.bethecoder.tutorials.core.special_numbers;
import java.util.ArrayList;
import java.util.List;
/**
* A perfect number equals the sum of its divisors, except itself
*
* @author Sudhakar KV.
*
*/
public class PerfectNumber {
/**
* @param args
*/
public static void main(String[] args) {
isPerfectNumber(4);
isPerfectNumber(6);
isPerfectNumber(24);
isPerfectNumber(28);
isPerfectNumber(496);
}
private static boolean isPerfectNumber(int number) {
int sumOfDevisors = 0;
List<Integer> devisors = new ArrayList<Integer>();
for (int i = 1 ; i <= number / 2 ; i ++) {
if (number % i == 0) {
sumOfDevisors += i;
devisors.add(i);
}
}
boolean perfect = (sumOfDevisors == number);
System.err.println(number + " is " +
(perfect ? "a perfect number" : "not a perfect number") +
" " + getSum(devisors, sumOfDevisors));
return perfect;
}
private static String getSum(List<Integer> devisors, int sumOfDevisors) {
StringBuilder sb = new StringBuilder("[ ");
for (int i = 0 ; i < devisors.size(); i ++) {
if (i > 0) {
sb.append(" + ");
}
sb.append(devisors.get(i));
}
sb.append(" = ").append(sumOfDevisors).append(" ]");
return sb.toString();
}
}
|
| |
It gives the following output,
4 is not a perfect number [ 1 + 2 = 3 ]
6 is a perfect number [ 1 + 2 + 3 = 6 ]
24 is not a perfect number [ 1 + 2 + 3 + 4 + 6 + 8 + 12 = 36 ]
28 is a perfect number [ 1 + 2 + 4 + 7 + 14 = 28 ]
496 is a perfect number [ 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 = 496 ]
|
|