java - "Magic Number"java练习

标签 java for-loop magic-numbers

所以我的任务是找到一系列数字(由用户输入)内的所有“魔数(Magic Number)”。魔数(Magic Number)是指其因数(除自身之外)之和等于该数字的数字。所以 6 将是一个神奇的数字,因为它除了本身之外还有 1,2 和 3 的因数,总和为 6。我已经盯着这段代码有一段时间了,但我无法弄清楚为什么它不会打印出来神奇的数字。任何帮助将不胜感激。

public class MagicNumber {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.print("What is the top of the range?");
    int range = IO.readInt();
    if (range <= 0 ) {
        IO.reportBadInput();
    }
    int sumOfFactors = 0;
    for (int i = 1 ; i <= range ; i++) {
        for (int m = 1 ; m < i; m++) {
            if (i % m == 0) {
                sumOfFactors = sumOfFactors + m;
            }
            if (sumOfFactors == i) {
                System.out.println(i);
                    }
            }
        }
    }
}

最佳答案

您正在测试是否 sumOfFactors == i,同时仍在对因子求和。您需要将其移至 m 循环之外。然后,您需要在每次通过 i 循环启动 m 循环之前将 sumOfFactors 设置为 0,而不仅仅是在循环开始时设置一次.

关于java - "Magic Number"java练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12994530/

相关文章:

java - 是否可以使用 JRE 作为标准 VM 来实例化 Java 编译器?

java - 突然错误: No static method setWebDialogTheme(I)V

Java 8 流 : collector returning filtered object

arrays - 在 Powershell 中创建和访问数组值

c# - 许多神奇的数字

java - SpringBootTest给出404错误,但curl成功

javascript - Javascript 中嵌套 for 循环的替代方案

javascript - 在每次循环迭代上添加延迟

java - 嵌入小程序在我的网站上不起作用

c - 文件中的魔数(Magic Number)。 C语言编程