//PascalABC.NET
//Версия 3.3, сборка 1627
function f(x: integer): boolean;
begin
f:=false;
var c:=0;
foreach var item in x.ToString.Select(t->t.ToDigit()).Where(r->r<>0) do
if (x mod item=0) then inc(c);
if c=x.ToString.Count then f:=true;
end;
begin
var n:=ReadInteger;
range(1,n).Where(x->f(x)).Println;
end.
Пойду по пути лени) У тебя в строке 12 условие
if ( i != 2 && j != 1 )
Как мы знаем, если используется && (логическое И), то мы выполняем тело условия в том случае, когда обе части выражения дадут 1 (или true). Так вот. Когда у тебя выполняется цикл по 3 строке. У тебя i = 2, а вот j меняется. Но т. к первая часть выражения i != 2 всегда дает 0 (или false) условие не выполняется не для кого)