Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

정수는 JavaScript에서 제곱 제수의 합을 완전 제곱으로 가집니다.

<시간/>

문제

우리는 두 개의 숫자 m과 n의 배열로 지정된 범위를 취하는 JavaScript 함수를 작성해야 합니다.

우리의 함수는 m과 n 사이의 모든 정수(1 <=m <=n과 같은 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 ] ]