728. Self Dividing Numbers (自分数)
1. 题目翻译
自分数的定义是一个数可以被他的每一位整除。例如,128是个自分数因为128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。当然,自分数不允许任何位存在0。给定两个数left和right,输出这两个数之间的所有自分数,包括这两个数。
例子:
输入:
left = 1, right = 22
输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
2. 解题方法
遍历从left到right的数,如果是自分数,就加入到一个vector中。判断自分数的方法就是将原数分别除以每一位看是否能整除。
3. 代码
//Runtime: 4ms
class Solution {
private:
bool isDivided(int n){
int n2 = n;
while(n2){
int temp = n2%10;
if(temp==0)
return false;
else if(n%temp!=0)
return false;
n2/=10;
}
return true;
}
public:
vector<int> selfDividingNumbers(int left, int right) {
vector<int> res;
for(int i = left;i<=right;i++)
if(isDivided(i))
res.push_back(i);
return res;
}
};