你能帮助“调试”这个程序吗?我拥有它几乎完美,但是当我打印它时,它包含我不想要的 "28" 。
public static boolean isPerfectNumber(int n)
{
int lhs=0,rhs = 0;
for(int i = 1;i<(n-2);i++)
{
lhs += i * (n/i) ;
rhs += i * ((n-1)/i) ;
}
rhs += n;
if(rhs == lhs)
{
return true ;
}
return false ;
}
public static void main(String[] theory) {
int candArray[] = new int [20] ;
for(int i = 2;i<21;i++)
{
candArray[i-2] = (int) (Math.pow(2, i-1)*(Math.pow(2, i)-1) );
}
for(int i = 1;i<20;i++){
if(isPerfectNumber(candArray[i]) )
{
System.out.println(candArray[i] + " is a perfectNumber" );
}
}
}