当我在控制台中运行代码时,浏览器停止工作(假设堆栈溢出)。
我想出了几种不同的算法来解决这个问题,但我认为这个不会导致任何 SO。
问题:
三角形数的序列是通过添加自然数生成的。所以第 7 个三角形数是 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28。前十项是:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
让我们列出前七个三角形数的因数:
1:1
3:1 3
6:1,2,3,6
10:1,2,5,10
15:1,3,5,15
21: 1,3,7,21
28:1、2、4、7、14、28
我们可以看到 28 是第一个有五个以上除数的三角形数。
第一个有超过 500 个除数的三角形数的值是多少?
失败的解决方案:
function divisors(n){
var counter = 0;
var triangle = 3;
var triangle_add = 2;
while (counter < n){
for (var i = 1; i = triangle; i++){
if (triangle % i === 0){
counter++;
}
};
if (counter < n){
triangle_add++;
triangle = triangle + triangle_add;
counter = 0;
};
};
return triangle;
};
console.log(divisors(501));