计算完美数字

时间:2013-12-05 00:42:39

标签: java boolean static-methods boolean-logic perfect-numbers

请参阅,我有一个布尔方法,通过修剪除数来获取除数,除数通过for循环检查并确定为真(不是第一个,只是循环程序以获得确定的输入量) 。 我不确定是否有某种方法可以获取循环的多个结果并将它们加在一起,但这就是我需要做的。现在我正在显示循环的结果,但这是用于调试,最后输出将是丰富的(增加的除数是否超过数字),完美(增加的除数等于数字)或不足(增加的除数小于数字) 这是eclipse中的代码:

import java.util.*;
public class PerfectNumber {

    /**
     * @param args
     */
    public static void main(String[] args) {
        for(int i = 0; i < 15; i++)
        {
            Scanner reader = new Scanner(System.in);
            int number = 0;
            int divisor = 1;
            int addnum = 0;
            System.out.println("Please input a number to check if it is perfect, abundant, or deficient");
            number = reader.nextInt();

            for(divisor = 1; divisor < number; divisor++)
            {
                isDivisor(number, divisor);
                if(isDivisor(number, divisor) == true)
                {
                    System.out.println(divisor);
                }
            }
        }   
    }

    static boolean isDivisor(int number, int divisor)
    {
        if (number % divisor == 0)
            return true;
        else 
            return false;
    }

}

3 个答案:

答案 0 :(得分:1)

回答看起来像家庭作业问题的直接问题;)

  

我不确定是否有某种方法可以获取循环的多个结果并将它们加在一起

您可以检查功能的返回,因为您已经在做并增加一个计数器

public boolean isSeven(int x){
    return x == 7;
}

public static void main(String[] args){
    int sumOfSevens= 0;
    int i = 0;
    while(i < 10){
        if(isSeven(7)){
            sumOfSevens = sumOfSevens + 7; // or +=
            ++i;
        }
    }
    // At this point sumOfSevens = 70;
} 

答案 1 :(得分:1)

您不需要isDivisor,因为它等于以下表达式:

number % divisor == 0

总结除数:

int  numDivSum = 0;       

for(divisor = 1; divisor < Math.sqrt(number); divisor++)
{

    if(number % divisor == 0)
    {
        numDivSum += divisor;
    }
}

并检查numDivSum是完美,丰富还是不足。

答案 2 :(得分:0)

如果你想在循环中求和,你可以使用这样的语句:

Int sum;
// your for loop start
    If ( isDivisor(number, divisor))
        sum += divisor;
   // end of loop
   //here you can do the comparison.

在if语句中无需与true进行比较。如果在if主体中只有一个语句,这个代码片段也可以使用。如果你需要做多件事,你必须将整个事情用括号括起来。

你第一次打电话给isDivisor是没用的,因为你没有做任何有价值的事情。