Код на Руби, фильтрует деление на 66 и все цифры четные
for i in 1000..(10000-1)
next if i % 66 > 0
t = i
uneven = false
while t > 0
c = t % 10
uneven = (uneven or (c % 2 == 1))
t = t / 10
end
next if uneven
p i
end
Вывод (осталось выбрать чтоб все цифры были разные):
2046
2244
2442
2640
4026
4224
4422
4488
4620
4686
4884
6006
6204
6402
6468
6600
6666
6864
8448
8646
8844