public class PerfectNumbers{ private double fact; private long primeNum; private boolean yesNoPrime; private int perfect; public int perfectNumber(int n){ int counter=0; int number=1; while(counter<n){ double y = Math.pow(2, number)-1; int z = (int)y; if(primeNum(z)==true){ double perfect1 = Math.pow(2, number-1)*(Math.pow(2, number)-1); counter++; number++; int perfect2 = (int) perfect1; perfect = perfect2; }else{ number++; } } return perfect; } public long mersennePrime(int n) { int counter = 1; int number = 1; while(counter<=n){ double x = Math.pow(2, number) - 1; int y = (int)x; if(PerfectNumbers.primeNumCheck(y)==true){ counter++; number++; long y1 = (long)y; primeNum = y1; }else{ number++; } } return primeNum; } static boolean primeNum(int num){ if(num<4){ if(num == 1) return false; } for(int i = 3; i<=Math.sqrt(num) + 0.5; i+=2){ if (num % i == 0){ return false; } } return true; } static boolean primeNumb(double num){ boolean prime = true; if(num==1){ return false; } int limit = (int) Math.sqrt ( num ); for (int i = 2; i <= limit; i++){ if (num % i == 0){ prime = false; break; } } return prime; } static boolean primeNumCheck(int number){ if(number == 7){ return true; } if(number>7){ if(number%2==0 || number%3==0){ return false; }else if(number%5==0 || number%7==0){ return false; }else if(number%23==0){ return false; }else{ return true; } }else if(number<8){ if(number == 1 || number == 4){ return false; }else if(number==2 || number == 3){ return true; }else if(number==5){ return true; } } return false; } }