完美的数字格式

时间:2013-11-25 22:56:18

标签: java formatting perfect-numbers

我得到了关于1-1000之间的完美数字的作业,其中一个数字等于其除数的总和。我找到了正确的代码来检查一个数字是否是一个完美的数字,并发现这些数字是1,6,28,496(我不知道为什么包含1,但这包含在我老师的例子中)。我的问题很简单。我希望的输出是这样的:
1 = 1
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
但我得到的是:
1 = 1
6 = 1 + 2 + 3 +
28 = 1 + 2 + 4 + 7 + 14 +
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 +
如何排除额外的+? 我的代码是这样的:

private static boolean perfect(int n){
    boolean cek=false;
    int x=0;
    if(n==1)x=1;
    for(int i=1;i<n;i++){
        if(n%i==0)
            x+=i;
    }
    if(x==n)cek=true;
    return cek;
}
public static void main(String[] args) {
    for(int i=1;i<1000;i++){
        if(perfect(i)){
            if(i==1)
                System.out.println(i+"\t = "+i);
            else{
                System.out.print(i+"\t = ");
                for(int j=1;j<i;j++){
                    if(i%j==0)
                        System.out.print(j+"+");
                }
            System.out.println("");
            }
        }
    }
}    

提前致谢。

2 个答案:

答案 0 :(得分:1)

由于这是作业,我只是给出一个提示,简单地说,只有打印+如果不是循环的第一次迭代。这很容易测试,我会让你搞清楚。

编辑,附加提示:您可能需要尝试确切打印+的位置。

答案 1 :(得分:0)

试试这个

boolean first = true;
for(int j=1;j<i;j++){
     if(i%j==0)
        if(!first)
           System.out.print("+"+j);
        else{
           first = false;
           System.out.print(j);
        }
 }