Thanks but I cannot understand why I get also the result Z=8
If I test each number from 1 to 9 I get always Z=9. See below
?- X =1, Y #= (X * 3 + 3) * 3, Z #= (Y rem 10) + (Y div 10), label([Z]).
X = 1,
Y = 18,
Z = 9.
?- X =2, Y #= (X * 3 + 3) * 3, Z #= (Y rem 10) + (Y div 10), label([Z]).
X = 2,
Y = 27,
Z = 9.
?- X =3, Y #= (X * 3 + 3) * 3, Z #= (Y rem 10) + (Y div 10), label([Z]).
X = 3,
Y = 36,
Z = 9.
?- X =4, Y #= (X * 3 + 3) * 3, Z #= (Y rem 10) + (Y div 10), label([Z]).
X = 4,
Y = 45,
Z = 9.
?- X =5, Y #= (X * 3 + 3) * 3, Z #= (Y rem 10) + (Y div 10), label([Z]).
X = 5,
Y = 54,
Z = 9.
?- X =6, Y #= (X * 3 + 3) * 3, Z #= (Y rem 10) + (Y div 10), label([Z]).
X = 6,
Y = 63,
Z = 9.
?- X =7, Y #= (X * 3 + 3) * 3, Z #= (Y rem 10) + (Y div 10), label([Z]).
X = 7,
Y = 72,
Z = 9.
?- X =8, Y #= (X * 3 + 3) * 3, Z #= (Y rem 10) + (Y div 10), label([Z]).
X = 8,
Y = 81,
Z = 9.
?- X =9, Y #= (X * 3 + 3) * 3, Z #= (Y rem 10) + (Y div 10), label([Z]).
X = Z, Z = 9,
Y = 90.