समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो दो संख्याओं 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 ] ]