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

JavaScript의 범위에서 특정 거리의 k-소수 찾기

<시간/>

K-프라임 숫자

자연수는 다중도로 계산된 정확히 k개의 소인수를 갖는 경우 k-소수라고 합니다.

이는 4의 유일한 소인수가 2이더라도 2-소수가 된다는 것을 의미합니다. 왜냐하면 -

4 =2 * 2 및 두 2 모두 별도로 계산되어 2로 계산됩니다.

마찬가지로 8은 3-소수입니다. 8 =2 * 2 * 2가 3으로 계산되기 때문입니다.

문제

우리는 숫자 k, 거리 및 범위를 취하는 JavaScript 함수를 작성해야 합니다.

우리의 함수는 지정된 거리와 정확히 같은 거리 사이의 범위 내에서 k-소수를 포함하는 배열의 배열을 반환해야 합니다.

예시

다음은 코드입니다 -

const k = 2;
const step = 2;
const range = [0, 50];
const kPrimeSteps = (k = 1, step = 1, [start, end]) => {
   const res = [];
   let i = start;
   const findLen = (n = 1) => {
      let count = 0, i = 2;
      while (i * i <= n) {
         while (n % i === 0) {
            count++;
            n /= i;
         }
         i++;
      }
      if (n > 1) count++;
      return count;
   }
   while (i <= end - step) {
      if ((findLen(i) == k && findLen(i+step) == k))
      res.push([i, i+step]);
      i++;
   }
   return res;
};
console.log(kPrimeSteps(k, step, range));

출력

다음은 콘솔 출력입니다 -

[ [ 4, 6 ], [ 33, 35 ] ]