Java - 哪个数字具有最多的除数

时间:2015-11-04 13:05:25

标签: java

我正在尝试计算具有最多除数的1-10000之间的数字。我想打印出那个数字,以及有多少除数。如果有多个除数最多的数字,我不打算打印出所有这些数字。

有人能帮帮我吗?我是新手,所以请不要使用高级代码。 谢谢

    public static void main(String[] args) {
    int divisors = 0;
    //int nr = 10000;

    for (int n = 1; n <= 10000; n++) {



    for (int i = 1; i <= n; i++) {

        if (n%i==0) {
            System.out.print(i + " ");
            divisors++;
            }
        }
        System.out.println("\nDivisors: " + divisors);
    }
}

}

1 个答案:

答案 0 :(得分:2)

你犯了典型的初学者错误。你已经获得了编写一个产生输出XY的程序的任务,现在你很难达到目标,因为你瞄准的目标已经超出了你的范围(但是!)。

解决此分配时应该采取的措施称为算法。从本质上讲,这是将较大问题解构为较小问题的方法,这些问题本身很容易解决。

所以你不要经历1到10000之间的所有数字,找到那些除数最多的数字。

那么,你可以解决的最小问题是什么,使得一些英寸/米更接近您想要的解决方案?

如果a是[{1}}的除数,那么对于两个给定数字bb,可能会检查一个程序。你已经有了一些完全符合这个要求的代码。

那么下一步是什么?

获取一个号码的所有除数怎么样?打印出来,查看你的程序是否正常工作,并以某种方式保存这个特定数字的除数,并打印出这个值。

现在你已朝着最终目标迈出了一大步。你有一个程序可以获得一个数字,并为你提供这个数字的每个有效除数。

从这里开始,你可以采取不同的方式实现目标(我只会展示一个)。由于您已经确定了一个数字有多少除数,现在可以为1到10000之间的每个数运行此程序,并确定每个数的除数。如果你正确地保存它们,你也可以直接使用它来通过最后一个小跳跃到达目标。

在迭代所有这1到10000个数字的同时,你已经可以节省你遇到的最高除数。因此,最后一步是查看除数量列表,并打印出您已经记住的数量,这是您遇到过的最高金额。

你现在解决了你的初始任务,并希望以某种方式学习你必须将大问题分解成较小的问题以使它们可以解决。所以,每当你想到“我该怎么解决这个问题?这对我来说太复杂了!”想到“Algorithmics就是解决方案!”并且“我必须把它分解成更小的位”。我知道这很难学,因为我辅导了很多很多初学者的编程课程,毫无例外地每个人都有这个问题,但最终每个人都迟早会得到它,因为他/她尝试并尝试和尝试。