java - 使用 Java 打印 1-100 之间的完美数字

标签 java for-loop nested-loops perfect-numbers

我不知道我的代码有什么问题。它应该打印 1 到 100 之间的所有完美数字。我尝试使用嵌套 for 循环、do while 循环和 for 循环。但是,代码似乎不正确。

class CompProject1
{

    public static void main()

    {

        int num, sum=0;

        int i;

        for(num=1; num<100; num++)

        {

           for(int j = 1; j<=num ; j++)

           {

               if(num%j==0)

               {

                   sum = sum+j;

                }

            }

           if(sum==num)

           {

             System.out.println(sum);  

            }
        }
    }
}

最佳答案

将代码更改为:

public static void main(String[] s1) throws Exception {
    int num, sum = 0;
    int i;
    for (num = 1; num < 100; num++) {
        for (int j = 1; j <= num - 1; j++) {   // change made here
            if (num % j == 0) {
                sum = sum + j;
            }
        }
        if (sum == num) {
            System.out.println(sum);
        }
        sum = 0;                              // change made here
    }

}

要点:

  1. 完成内部迭代后将 sum 重置为 0
  2. 在你的内部 for循环中,你需要检查是否直到num - 1而不是num,因为每个数字都可以被自己整除

关于java - 使用 Java 打印 1-100 之间的完美数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54538708/

相关文章:

java - 在运行时获取函数名并执行

java - 使用 java jdbc 和准备好的语句创建数据库查询返回语法错误

python - 如何在这个素数筛子的 for 循环中花费更少的时间?

matlab - 许多嵌套循环 - 我怎样才能让它更快?

python - 在嵌套 while 循环中使用 matplotlib 绘制多个图

c++ - 创建 N 嵌套 for 循环

java - 如何在java中声明unsigned char数组?

java - 自定义 Java JTree 实现

c++ - 在 C++ 函数中通过引用传递

c++ - for循环输出不显示