Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm số Harshad trong JavaScript

Số Harshad: chia hết cho tổng các chữ số. Ví dụ 126 chia hết cho 1+2+6=9.

  • Tất cả số 1 chữ số là Harshad.
  • Thường xuất hiện thành cụm liên tiếp: [1..10], [110,111,112], [1010,1011,1012].

Viết hàm nhận số, kiểm tra Harshad, nếu không trả -1, nếu có trả độ dài cụm Harshad liên tiếp chứa số đó.

Ví dụ:

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

Chia thành 2 hàm:

  • isHarshad() → nhận số, trả boolean.
  • harshadNum() → hàm chính, gọi isHarshad, trả độ dài cụm.

Code isHarshad:

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

Code harshadNum:

const harshadNum = (number) => {    if(!isHarshad(number)){       return -1;    }    let streak = 1, prev = number-1, next = number+1;    while(isHarshad(prev) && prev > 0){       streak++;       prev--;    }    while(isHarshad(next)){       streak++;       next++;    }    return streak; }; console.log(harshadNum(1014));

Kiểm tra số nhập, nếu không phải Harshad trả -1. Duyệt lùi và tiến đếm cụm liên tiếp.

Ví dụ hoàn chỉnh

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(!isHarshad(number)){       return -1;    }    let streak = 1, prev = number-1, next = number+1;    // kiểm tra cụm trước    while(isHarshad(prev) && prev > 0){       streak++;       prev--;    }    // kiểm tra cụm sau    while(isHarshad(next)){       streak++;       next++;    }    return streak; }; console.log(harshadNum(1014));

Kết quả

Đầu ra console:

4