Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript trong một phạm vi được chỉ định bởi một mảng gồm hai số m và n.
Hàm của chúng ta phải tìm tất cả các số nguyên giữa m và n (m và n số nguyên chẳng hạn như 1 <=m <=n) sao cho tổng các ước bình phương của chúng là một bình phương.
Nó sẽ trả về một mảng các mảng con. Các mảng con sẽ có hai phần tử:đầu tiên là số các ước bình phương của nó là một bình phương và sau đó là tổng các ước bình phương.
Ví dụ
Sau đây là mã -
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));
Đầu ra
[ [ 1, 1 ], [ 42, 2500 ], [ 246, 84100 ], [ 287, 84100 ] ]