Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm ra mã số Harshad JavaScript

Số Harshad là những số chia hết chính xác cho tổng các chữ số của chúng, giống như số 126, nó hoàn toàn chia hết cho 1 + 2 + 6 =9.

  • Tất cả các số có một chữ số đều là số harshad.

  • Các số Harshad thường tồn tại trong các cụm liên tiếp như [1,2,3,4,5,6,7,8,9,10], [110,111,112], [1010, 1011, 1012].

Công việc của chúng ta là viết một hàm nhận Số làm đầu vào kiểm tra xem đó có phải là số harshadnumber hay không, nếu không thì trả về -1, ngược lại thì trả về độ dài của chuỗi liên tiếp của cụmharshad.

Ví dụ -

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

Hãy chia vấn đề này thành hai chức năng chính,

  • isHarshad () → nhận vào một số num và trả về một boolean tùy thuộc vào việc số đó có phải là harshad hay không.

  • harshadNum () → hàm chính nhận số thực, thực hiện cuộc gọi đến isHarshad () tại các điểm khác nhau và trả về độ dài của chuỗi.

Mã hóa hàm isHarshad () -

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

Hàm lặp lại khá đơn giản trả về boolean

Bây giờ, hãy mã hóa hàm harshadNum () -

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));

Hiểu mã trên -

  • Kiểm tra xem đầu vào có phải là harshad hay không, nếu không, hãy dừng chức năng và trả về -1;

  • Chạy ngược một vòng lặp lại, một vòng tiến lên trong khi chúng tôi tiếp tục nhận được số harshadnumbers, đồng thời tiếp tục cập nhật chuỗi

  • Cuối cùng trả lại chuỗi

Sau đây là mã hoàn chỉnh -

Ví dụ

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));

Đầu ra

Đầu ra cho mã này trong bảng điều khiển sẽ là -

4