# 自然数

自除数 是指可以被它包含的每一位数整除的数。

例如,128 是一个 自除数 ,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
自除数 不允许包含 0 。

给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left, right] 内所有的 自除数 。

 

示例 1:

输入:left = 1, right = 22
输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
示例 2:

输入:left = 47, right = 85
输出:[48,55,66,77]
 

提示:

1 <= left <= right <= 104

# 解(1)

/**
 * @param {number} left
 * @param {number} right
 * @return {number[]}
 */
var selfDividingNumbers = function(left, right) {
  const res = []
  for (let i = left; i <= right; i++) {
    if (isSelfDividing(i)) {
      res.push(i)
    }
  } 
  return res

};
const  isSelfDividing = function(num) {  // 判断是否是自除数       
  let str = num.toString()  
  for (let i = 0; i < str.length; i++) {  
    if (str[i] === '0' || num % parseInt(str[i]) !== 0) {
      return false
    }
  }
  return true
} 

# 解(2)

/**
 * @param {number} left
 * @param {number} right
 * @return {number[]}
 */
var selfDividingNumbers = function (left, right) {
  const res = [];
  for (let i = left; i <= right; i++) {
    i
      .toString()
      .split("")
      .every((c) => c !== 0 && i % parseInt(c) === 0) && res.push(i);
  }
  return res;
};
Last Updated: 6/13/2022, 2:31:48 PM