Please!!!! Помогите решить задачу и объясните ** словах суть алгоритма! Напишите в...

0 голосов
40 просмотров

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.


Информатика (419 баллов) | 40 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

В функции f определяется наибольший общий делитель (НОД) чисел x и y. В основной программе подсчитывается количество чисел из диапазона [1,a], у которых НОД(i,4)=2. При a=20 это количество = 5 (числа 2, 6, 10, 14, 18). Значение 5 получится, таким образом, если а будет = 18, 19, 20, 21. Всего 4 значения.
Ответ: 4

(194k баллов)
0

Спасиб! Значит это модифицированный алгоритм Эвклида...

0

Да, именно так.