在 JavaScript 中查找最近的有间隙数
javascriptweb developmentobject oriented programming更新于 2025/9/25 16:12:17
当满足以下条件时,该数字即为有间隙数: −
- 它至少有三位数,并且
- 它可以被其首位和末位数字相加而成的数字整除
例如 −
数字 1053 是一个有间隙数,因为它有 4 位数字,并且可以被 13 整除。 同样,135 是一个有间隙数,因为它有 3 位数字,并且可以被 15 整除。
我们的工作是编写一个程序,返回最接近我们输入的数字的有间隙数。
例如,对于所有 2 位数字,它将是 100。对于 103,它将是105.
我们将问题分解为两个函数 −
isGapful() 函数
它接收一个数字字符串并返回一个布尔值,如下面的代码所示 −
const isGapful = (numStr) => {
const int = parseInt(numStr);
return int % parseInt(numStr[0] + numStr[numStr.length - 1]) === 0;
};
nearestGapful() 函数
这是我们的主要函数,它接收一个数字,返回最接近的 gapful 数字。以下是代码 −
const nearestGapful = (num) => {
if(typeof num !== 'number'){
return -1;
}
if(num <= 100){
return 100;
}
let prev = num - 1, next = num + 1;
while(!isGapful(String(prev)) && !isGapful(String(next))){
prev--;
next++;
};
return isGapful(String(prev)) ? prev : next;
};
isGapful() 函数在恒定时间内根据数字是否有间隙返回布尔值,nearestGapful() 函数循环直到找到有间隙的数字并返回它。
以下是完整代码 −
示例
const n = 134;
//接收数字字符串并返回布尔值
const isGapful = (numStr) => {
const int = parseInt(numStr);
return int % parseInt(numStr[0] + numStr[numStr.length - 1]) === 0;
};
//主函数 - 接收数字,返回数字
const nearestGapful = (num) => {
if(typeof num !== 'number'){
return -1;
}
if(num <= 100){
return 100;
}
let prev = num - 1, next = num + 1;
while(!isGapful(String(prev)) && !isGapful(String(next))){
prev--;
next++;
};
return isGapful(String(prev)) ? prev : next;
};
console.log(nearestGapful(n));
输出
控制台中的输出将是 −
135
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

