在 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

相关文章


有用资源