【发布时间】:2016-03-12 16:07:06
【问题描述】:
我正在解决欧拉问题 108,因此我想找到整数 n,以便有 1000 个组合:1/i + 1/t = 1/n(i 和 t 是随机数)。我的代码:
int counter = 0;
for (int n = 10000; n < 200000; n++) {
for (int i = n; i < 1000000; i++) {
for (int t = i; t < 1000000; t++) {
if ((n * (i + t)) == (i * t)) {
counter++;
if (counter == 1000) {
System.out.println("Counter: " + counter);
System.out.println("N: " + n);
System.exit(0);
}
}
}
}
counter = 0;
}
但是,这不会终止。怎么来的?我为每一轮重置计数器并检查它是否达到了 1000。
【问题讨论】:
-
ProjectEuler 的精神是自己寻找答案。
-
有 1,000,000 * 1,000,000 * 200,000 次迭代,即
2e17迭代。即使您每秒运行 1 亿次迭代,这仍然超过 60 年...... -
你至少需要一个大型机来终止这个:-)
标签: java