查找哈沙德数 JavaScript
javascriptweb developmentobject oriented programming更新于 2025/9/25 14:36:17
哈沙德数是那些能被其数字之和整除的数字。 就像数字 126 一样,它可以被 1+2+6 = 9 完全整除。
所有个位数都是 harshad 数字。
Harshad 数字通常存在于连续的群集中,例如 [1,2,3,4,5,6,7,8,9,10]、 [110,111,112]、[1010, 1011, 1012]。
我们的工作是编写一个函数,该函数以数字作为输入,检查它是否是 harshad 数字,如果不是,则返回 -1,否则返回连续 harshad 群集的条纹长度。
例如 −
harshadNum(1014) = harshadNum(1015) = harshadNum(1016) = harshadNum(1017) = 4 harshadNum(1) = 10 harshadNum(12) = 1 harshadNum(23) = -1
让我们将这个问题分解为两个主要函数,
isHarshad() → 接受一个数字 num 并返回一个布尔值,具体取决于该数字是否为 harshad。
harshadNum() → 主函数接受实际数字,在各个点调用 isHarshad() 并返回 streak 的长度。
编写 isHarshad 函数() −
const isHarshad = (num) => {
let sum = 0, temp = num;
while(temp){
sum += temp % 10;
temp = Math.floor(temp/10);
}
return num % sum === 0;
}
返回布尔值的非常简单的迭代函数
现在让我们编写 harshadNum() 函数 −
const harshadNum = (number) => {
//如果输入不是 harshad,则返回 -1
if(!isHarshad(number)){
return -1;
}
let streak = 1, prev = number-1, next = number+1;
//检查前面的 streak
while(isHarshad(prev) && prev > 0){
streak++;
prev--;
}
//检查后续连胜
while(isHarshad(next)){
streak++;
next++;
}
return streak;
};
console.log(harshadNum(1014));
理解上述代码 −
检查输入是否为 harshad,如果不是,则停止函数并返回 -1;
向后运行一个循环,向前运行一个循环,同时不断获取 harshad 数字,同时不断更新 streak
最后返回 streak
以下是完整代码 −
示例
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) => {
//如果输入不是 harshad,则返回 -1
if(!isHarshad(number)){
return -1;
}
let streak = 1, prev = number-1, next = number+1;
//检查前一个 streak
while(isHarshad(prev) && prev > 0){
streak++;
prev--;
}
//检查后一个 streak
while(isHarshad(next)){
streak++;
next++;
}
return streak;
};
console.log(harshadNum(1014));
输出
此代码在控制台中的输出将是 −
4
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

