Please!!!! Помогите решить задачу и объясните на словах суть алгоритма! Напишите в ответе количество различных значений входной переменной a из интервала от 1 до 100 (включая границы), при которых программа выдаёт тот же ответ, что и при входном значении a = 20. Значение a = 20 также включается в подсчёт различных значений a.
var i, k, a: integer;
function f(x: integer; y: integer): integer;
begin
if x = y then
f := x else
if x > y then f := f(x - y, y)
else f := f(x, y - x);
end;
begin
k := 0;
readln(a);
for i := 1 to a do
if f(i, 4) = 2 then k := k + 1;
writeln(k);
end.