因此,我的任务是在一个数字范围内(由用户输入)查找所有“魔术数字”。幻数是一个数字,其因子(除自身外)之和等于该数字。所以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循环之外。然后,您需要在每次通过sumOfFactors循环而不是仅在循环开始时一次启动m循环之前,将i设置为0。

09-27 02:44