コンソールでコードを実行すると、ブラウザーが機能しなくなります (スタック オーバーフローを想定しています)。
この問題を解決するためにいくつかの異なるアルゴリズムを考え出しましたが、これは SO を引き起こさないと思いました。
問題:
三角形の数列は、自然数を加算することによって生成されます。したがって、7 番目の三角形の数は 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 になります。最初の 10 項は次のようになります。
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
最初の 7 つの三角形の数の因数を挙げてみましょう。
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 は、約数が 5 を超える最初の三角形の数であることがわかります。
約数が 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));