求大神指点 如何用java 判断一个数是否是完数
1个回答
展开全部
java中如何判断一个数是否完全数,可以分为求约数(不包括本身)、求约数之和以及比较自身和约数之和是否相等三个步骤。
第一步:求约数
public static List<int> yueShu(int n){
List<int> list = new ArrayList<int>();
for(int i=1;i<=n/2;i++){
if(n%i==0){
list.add(i);
}
}
return list;
}
解析:如果该数除以循环中的变量的余数为零,那么该变量就是该数的约数。其中有个注意点,如果循环变量大于该数的一半之后就不会是该数的余数了(该数本身除外),所以循环到该数一半时便结束。
第二步:求约数之和
public static int sum(List<int> list){
int total=0;
Iterator it=list.iterator();
while(it.hasNext()){
total+=it.next();
}
return total;
}
解析:利用while遍历List,将List中的值全部加起来。
第三步:比较本身与约数之和是否相等
public static boolean isPerfect(int n){
return n==sum(yueShu(n));
}
如果该数与该数的约数之和相等,则该方法返回true,否则返回false。最后根据该方法的返回值判断该数是不是完全数。
第一步:求约数
public static List<int> yueShu(int n){
List<int> list = new ArrayList<int>();
for(int i=1;i<=n/2;i++){
if(n%i==0){
list.add(i);
}
}
return list;
}
解析:如果该数除以循环中的变量的余数为零,那么该变量就是该数的约数。其中有个注意点,如果循环变量大于该数的一半之后就不会是该数的余数了(该数本身除外),所以循环到该数一半时便结束。
第二步:求约数之和
public static int sum(List<int> list){
int total=0;
Iterator it=list.iterator();
while(it.hasNext()){
total+=it.next();
}
return total;
}
解析:利用while遍历List,将List中的值全部加起来。
第三步:比较本身与约数之和是否相等
public static boolean isPerfect(int n){
return n==sum(yueShu(n));
}
如果该数与该数的约数之和相等,则该方法返回true,否则返回false。最后根据该方法的返回值判断该数是不是完全数。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询