因此,我的任务是在一个数字范围内(由用户输入)查找所有“魔术数字”。幻数是一个数字,其因子(除自身外)之和等于该数字。所以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。