在 JavaScript 中求出整数平方数的平方法除数和
问题
我们要求编写一个 JavaScript 函数,它接受由两个数字 m 和 n 指定的范围。
我们的函数应该找到 m 和 n 之间的整数(m 和 n 整数,如 1 <= m <= n),使得它们的平方因子的和本身就是一个平方数。
它应该返回一个子数组数组。子数组将有两个元素:第一个元素是平方因子的和是平方数的数字,然后是平方因子的和。
示例
以下为代码 −
const range = [1, 500]; const listSquared = ([m, n]) => { const res = []; for (let i = m; i <= n; ++i) { let sum = getDivisors(i).reduce((sum, n) => sum + n * n, 0); let ok = Number.isInteger(Math.sqrt(sum)); if (ok) { res.push([i, sum]); } } return res; } function getDivisors (n) { const divisors = []; for (let i = 1; i <= n / 2; ++i) { if (n % i) { continue; } divisors.push(i); } return divisors.concat([n]); } console.log(listSquared(range));
输出
[ [ 1, 1 ], [ 42, 2500 ], [ 246, 84100 ], [ 287, 84100 ] ]
广告