当-时,数字为空数-
它至少包含三位数,并且
可以通过将第一位和最后一位放在一起形成的数字来整除
例如-
数字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