#728
Easy Algorithms Self dividing numbers
Math
80.6% acceptance
Feb 21, 2026
1925
384
A self-dividing number is a number that is divisible by every digit it contains.
For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.
A self-dividing number is not allowed to contain the digit zero.
Given two integers left and right, return a list of all the self-dividing numbers in the range [left, right] (both inclusive).
Solution
Rust
Time O(n)
Space O(1)
/*
* A self-dividing number is a number that is divisible by every digit it contains.
* For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.
* A self-dividing number is not allowed to contain the digit zero.
* Given two integers left and right, return a list of all the self-dividing numbers in the range [left, right] (both inclusive).
* Example 1:
* Input: left = 1, right = 22
* Output: [1,2,3,4,5,6,7,8,9,11,12,15,22]
* Example 2:
* Input: left = 47, right = 85
* Output: [48,55,66,77]
* Constraints:
* 1 <= left <= right <= 104
*/
impl Solution {
pub fn self_dividing_numbers(left: i32, right: i32) -> Vec<i32> {
(left..=right).filter(|&n| {
let mut x = n;
while x > 0 {
let d = x % 10;
if d == 0 || n % d != 0 { return false; }
x /= 10;
}
true
}).collect()
}
}