使用布尔值检查完整数字

时间:2016-10-22 09:25:42

标签: java boolean perfect-numbers

我的Java编码问题是使用布尔方法找到完美的数字。我想打印出这样的: 示例: '6是一个完美的数字。 6是1,2,3'的总和 除此以外 : '9不是一个完美的数字'

但我不知道如何编码“6是1,2,3的总和”。谁能帮我? 这是我的编码:

import java.util.Scanner;

public class trial
{
    public static void main(String[] args)
    {
        // TODO Auto-generated method stub

        Scanner perfect = new Scanner(System.in);
        System.out.print("Enter any integer number : ");
        int n = perfect.nextInt();

        if(isPerfectNumber(n))
        {
            System.out.println(n+" is a perfect number");

        }
        else
        {
            System.out.println(n+" is not a perfect number");
        }
    }

    public static boolean isPerfectNumber(int n)
    {
        int sum = 0;
        for (int i=1; i<n; i++)
        {
            if (n%i == 0)
            {
                sum = sum + i;
            }
        }
        if (sum == n)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

3 个答案:

答案 0 :(得分:1)

嗯,您已经知道如何根据if (n%i == 0)行获取数字因素。

所以,提示只是因为这几乎肯定是班级工作。

在同一点上,您将该因子添加到总和中,您应该将其添加到某些描述的列表中,并使其可用于调用函数。

一种可能性是返回一个列表,第二个和后续元素是给定数字的所有因子,第一个元素是那些的总和。

因此,对于6,您会获得列表{6, 1, 2, 3}12会给您{16, 1, 2, 3, 4, 6}7会给您{7, 1} }。

这样,您只需要针对第一个元素检查原始数字,如果它们相等,则打印出其他元素。换句话说,伪代码如:

input num
factorList = getFactorList(num)
if factorList[0] == num:
    print num, " is perfect, factors are:"
    for idx = 1 to factorList.size() - 1 inclusive:
        print " ", factorList[idx]
    println "."
else:
    println num, " is not perfect."

答案 1 :(得分:1)

我会更改isPerfectNumber以返回Listn的{​​{1}}因素,如果它不是一个完美的数字。然后你有一个结果都包含因子,可以用来确定null是否完美:

n

答案 2 :(得分:0)

在for循环中,如果条件是模数为真,那么你知道i必须以某种方式保持在轨道上。

所以我愿意 声明一个整数的arraylist来跟踪总和数。

ArrayList<Integer> numbs = new ArrayList<Integer>();

然后

public static boolean isPerfectNumber(int n)
{
        int sum = 0;            
        for (int i=1; i<n; i++)
        {
            if (n%i == 0)
            {
                numbs.add(i);  //here keep track of those summation numbers
                sum = sum + i;
            }
        }
        if (sum == n)
        {
            return true;
        }
        else
        {
            return false;
        }
}

现在打印时你可以这样做

System.out.println(n + " is a perfect number. " + n + " is sum of " + StringUtils.join(numbs, ","));

不要忘记导入StringUtils:import org.apache.commons.lang3.StringUtils commons-lang3库。