当前位置: 首页 > 知识库问答 >
问题:

完美数字格式

管峻
2023-03-14

我做了一个关于1-1000之间的完美数的家庭作业,其中一个数等于它的除数之和。我找到了正确的代码来检查一个数字是否是一个完美的数字,并发现这些数字是1,6,28,496(我不知道为什么会包括1,但我老师的例子中包括了1)。我的问题很简单。我希望得到的结果是:
1=1
6=123
28=124714
496=123816162124248
但我最终得到的结果是:
1=1
6=1234
496=1238162124248
我如何排除额外的部分
我的代码是这样的:

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个答案

胡高寒
2023-03-14

试试这个

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);
        }
 }
汪晨
2023-03-14

因为这是家庭作业,我只是给出一个提示,简单地说,只有在不是循环的第一次迭代的情况下才打印。这很容易测试,我会让你弄清楚的。

编辑,并附加提示:您可能需要尝试在哪里打印

 类似资料:
  • 这是我的代码:- 为什么程序不打印完美的数字? 我已经检查了很多次代码,但我找不到解决方案。请告诉我代码中出了什么问题。提前谢谢 任何帮助都将不胜感激。。。。

  • 我是Java新手,为了练习,我在互联网上找到了一项任务: "在你输入的两个数字之间找到所有完美的数字。" 顺便说一下——一个完美的数字是一个自然数,等于它所有除数的和。所以我开始工作,遇到了这样一个问题,当我输入两个数字时。 例如:,我在控制台中得到正确答案:。但是,如果第一个数字是,例如,,第二个是,我会将此输出输出到控制台:,而我应该只得到。也就是说,出于某种原因,最小值不会缩短对完美数的搜索

  • 我的代码运行,但对于其中一个测试,当我只需要一个输出时,会打印两个输出。我不确定如何避免这种情况。 这就是任务: 编写一个应用程序,显示从2到1000的每个完美数字。一个完美数等于所有被平均分割的数之和。例如,6是完美的,因为1、2和3等分,它们的和是6;然而,12不是一个完美的数字,因为1,2,3,4,6等分,它们的总和大于12。 提供的模板列出了for循环的首字母,以检查从2开始到1000的每

  • 例如,243是3的完美幂,因为243=3^5。 我以前一直在使用,我认为它工作得很好,但后来我用上面的示例尝试了它,由于浮点运算,它实际上返回了4.99999999999。所以它只适用于非常小的数字,我发现不到大约100个。 我想我可以用一个循环来重复乘法。。。i、 将i设置为3,然后设置为9,然后设置为27,然后设置为81,然后设置为243,这等于目标值,所以我们知道这是一个完美的幂。如果它达到

  • 岗位是C++客户端,一面好久没消息了,估计是凉了。。。 总共半个小时,但是强度很高,问了30多个问题,问的基本是C++。 1.知道堆排序吗,具体是怎么实现的 讲了讲堆的性质、问道具体实现(如何建树、插入)没说清楚。 建堆:首先堆可以是一个数组,但是有着完全二叉树的性质,当节点下标为index的时候,左子树下标为index * 2 + 1,右子树下标为index * 2 + 2,这样我们可以从第一个

  • 问题内容: 如何使dict的子类尽可能“完美” ?最终目标是要有一个简单的字典,其中的键是小写的。 看来应该有一些微小的原语可以重写以完成此工作,但是根据我的所有研究和尝试,似乎并非如此: 如果我覆盖,则get/ set不起作用。如何使它们工作?当然,我不需要单独实施它们吗? 我是否在阻止酸洗,我需要实施等吗? 我是否需要以及? 我应该只使用(似乎不应该使用)吗?如果是这样,怎么办?这些文档并不完