समस्या
हमें एक 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 ] ]