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

엄청나게 못생긴 숫자 JavaScript

<시간/>

매우 못생긴 숫자

매우 못생긴 숫자는 모든 소수가 k 크기의 주어진 소수 목록 소수에 있는 양수입니다. 예를 들어, [1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32]는 소수 =[2, 7, 13, 19]가 주어진 처음 12개의 매우 못생긴 숫자의 시퀀스입니다. 크기 4.

문제

첫 번째 인수로 number, num을, 두 번째 인수로 소수의 배열 arr을 취하는 JavaScript 함수를 작성해야 합니다. 함수는 (num)번째 엄청나게 못생긴 숫자를 찾아서 반환해야 합니다.

예시

이에 대한 코드는 -

const num = 7;
const arr = [2, 7, 14, 19];
const superUgly = (num = 1, arr = []) => {
   arr.sort((a, b)=> a - b);
   const ptr = [];
   const res = [];
   for(let i=0;i<arr.length;i++){
      ptr[i] = 0;
   };
   res.push(1);
   for(let i = 1; i < num; i++){
      let mn=Math.pow(2, 32) - 1;
      for(let j = 0; j < arr.length; j++){
         mn=Math.min(mn,arr[j]*res[ptr[j]])
      };
      res[i]=mn
      for(let j=0; j < arr.length; j++){
         if(mn % arr[j] === 0){
            ptr[j]++;
         };
      };
   };
   return res[num-1]
};
console.log(superUgly(num, arr));

출력

콘솔의 출력은 -

16