//PerfectNumbers.java //perfect: sum of proper divisors equals the number. // An even perfect number is of form: 2^(k-1)*(2^k - 1) // where 2^k - 1 is prime (ie. a Mersenne prime). // If k composite, then 2^k - 1 is not prime eg. k=8 2^8 - 1 =63 // but if k prime, then maybe 2^k - 1 is prime but k=11 2^11 - 1 =2047=23*89 // No oddperfect number ever found...smallest must be bigger than 10^300 etc import java.awt.*; import javax.swing.*; public class PerfectNumbers { public static void main (String[] args) { String input; int maxTry; long n, sum, p, q; int numFactors; input = JOptionPane.showInputDialog("Max value of k","16"); maxTry = Integer.parseInt(input); for (int k=2; k<=maxTry; k++) { //n = (long)(Math.pow(2,k-1)*(Math.pow(2,k)-1)); p = 1L<<(k-1); //2^k-1 q = (1L<