【发布时间】:2011-04-15 00:56:39
【问题描述】:
public class Three {
public static void main(String[] args) {
Three obj = new Three();
obj.function(600851475143);
}
private Long function(long i) {
Stack<Long> stack = new Stack<Long>();
for (long j = 2; j <= i; j++) {
if (i % j == 0) {
stack.push(j);
}
}
return stack.pop();
}
}
当上面的代码运行时,它会在obj.function(600851475143); 行产生一个错误。为什么?
【问题讨论】:
-
“l”和“L”也没有区别吗?
-
@user446654:不,有。后者更具可读性。请阅读“Java Puzzler”。
-
@user446654:不断发展@Thilo 对可能超出内存限制的想法我想添加我的 2 个硬币:如果你想操作,你选择了非常非常糟糕的算法来搜索数字的所有除法器像您的示例中那样大的数字。基于动态编程的东西可能会更好。谷歌上的进一步结果。
-
添加了 PE 标签,Project Euler #3
-
@st0le:恕我直言,这个问题绝对不是关于原始问题的解决方案,我们看到的也不是解决方案。