在JavaScript中查找最接近的Gapful数

当-时,数字为空数-

  • 它至少包含三位数,并且

  • 可以通过将第一位和最后一位放在一起形成的数字来整除

例如-

数字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;
};

最近的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()函数返回,基于数是否gapful与否在固定时间一个布尔值,该nearestGapful()方法循环,直到它找到一个数字,是gapful并将其返回。

以下是完整的代码-

示例

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
猜你喜欢