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

Harshad 숫자 찾기 JavaScript

<시간/>

하샤드 숫자는 해당 자릿수의 합으로 정확히 나누어 떨어지는 숫자입니다. 숫자 126과 마찬가지로 1+2+6 =9로 완전히 나눌 수 있습니다.

  • 모든 한 자리 숫자는 가혹한 숫자입니다.

  • 하샤드 숫자는 [1,2,3,4,5,6,7,8,9,10],[110,111,112], [1010, 1011, 1012]와 같이 연속적인 클러스터에 종종 존재합니다.

우리가 할 일은 숫자를 입력으로 받는 함수를 작성하는 것입니다. 입력으로 숫자가 가혹한 숫자인지 여부를 확인하고, 그렇지 않으면 -1을 반환하고 그렇지 않으면 연속 harshad 클러스터의 길이를 반환합니다.

예를 들어 -

harshadNum(1014) = harshadNum(1015) = harshadNum(1016) = harshadNum(1017) = 4
harshadNum(1) = 10
harshadNum(12) = 1
harshadNum(23) = -1

이 문제를 두 가지 주요 기능으로 나누겠습니다.

  • isHarshad() → 숫자 num을 받아 숫자가 가혹한지 여부에 따라 부울을 반환합니다.

  • harshadNum() → 실제 숫자를 받는 main 함수는 다양한 지점에서 isHarshad()를 호출하고 줄무늬의 길이를 반환합니다.

isHarshad function() 코딩 -

const isHarshad = (num) => {
   let sum = 0, temp = num;
   while(temp){
      sum += temp % 10;
      temp = Math.floor(temp/10);
   }
   return num % sum === 0;
}

부울을 반환하는 아주 간단한 반복 함수

이제 heavyadNum() 함수를 코딩해 보겠습니다. -

const harshadNum = (number) => {
   //if the input is not harshad return -1
   if(!isHarshad(number)){
      return -1;
   }
   let streak = 1, prev = number-1, next = number+1;
   //check preceding streak
   while(isHarshad(prev) && prev > 0){
      streak++;
      prev--;
   }
   //check succeeding streak
   while(isHarshad(next)){
      streak++;
      next++;
   }
   return streak;
};
console.log(harshadNum(1014));

위 코드 이해하기 -

  • 입력이 가혹한지 확인하고, 그렇지 않으면 기능을 중지하고 -1을 반환합니다.

  • 우리가 계속 가혹한 숫자를 얻는 동안 하나의 루프를 뒤로, 하나를 앞으로 실행하고 동시에 연속 연속 업데이트를 계속합니다.

  • 마지막으로 연속 기록을 반환합니다.

다음은 전체 코드입니다 -

예시

const isHarshad = (num) => {
   let sum = 0, temp = num;
   while(temp){
      sum += temp % 10;
      temp = Math.floor(temp/10);
   }
   return num % sum === 0;
}
const harshadNum = (number) => {
   //if the input is not harshad return -1
   if(!isHarshad(number)){
      return -1;
   }
   let streak = 1, prev = number-1, next = number+1;
   //check preceding streak
   while(isHarshad(prev) && prev > 0){
      streak++;
      prev--;
   }
   //check succeeding streak
   while(isHarshad(next)){
      streak++;
      next++;
   }
   return streak;
};
console.log(harshadNum(1014));

출력

콘솔에서 이 코드의 출력은 -

입니다.
4