所以我的任务是找到一系列数字(由用户输入)内的所有“魔数(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/