匿名用户
1级
2013-01-22 回答
Java源代码:
import java.util.Scanner;
public class Exam01 {
public static void main(String[] args) {
int num;
System.out.print("请输入一个正整数:");
Scanner scan = new Scanner(System.in);
num = scan.nextInt();
if(perfectNumber(num) == true){
System.out.printf("%d 是一个完美数", num);
}
else{
System.out.printf("%d 不是一个完美数", num);
}
}
/**
* 判断num是否是完美数(各位数字之和恰好是完全数)
* @param num 待判断数
* @return true-完美数,false-非完美数
*/
public static boolean perfectNumber(int num){
int sum = 0;
//求num的各位数字之和
while(num > 0){
sum += num % 10;
num /= 10;
}
return completeNumber(sum);
}
/**
* 判断num是否是完全数(所有小于自身的因子之和恰好等于其自身的正整数)
* @param num 待判断数
* @return true-完全数,false-非完全数
*/
public static boolean completeNumber(int num){
if(num <= 1){
return false;
}
int sum = 1;
//求小于num的所有因子之和
for(int i=2; i
if(num % i == 0){
sum += i;
}
}
return (sum == num ? true : false);
}
}
运行测试:
请输入一个正整数:600
600 是一个完美数
请输入一个正整数:64
64 不是一个完美数