Форум » Циклы и ветвления » егэ 21 №91 » Ответить

егэ 21 №91

GAF: Здравствуйте, что в этой функции нужно найти? Я вообще не могу понять как решать такую задачу. Не затруднит ли вас написать решение с пояснениями? 91) (Д. Муфаззалов, Белград). Напишите в ответе количество различных значений входной переменной a из интервала от 1 до 30 (включая границы), при которых программа выдаёт тот же ответ, что и при входном значении a = 17. Значение a = 17 также включается в подсчёт различных значений a. var i, k, a: integer; function f(x: integer; y: integer): integer; begin if y = 0 then f := x else f := f(y, x mod y) end; begin k := 0; readln(a); for i := 1 to a do if f(a, i) = i then k := k + 1; writeln(k); end.

Ответов - 1

polyakovss: Здравствуйте, GAF! function f(x: integer; y: integer): integer; begin if y = 0 then f := x else f := f(y, x mod y) end; 1) функция f(x,y) = y, если y является делителем x. Проверим, например, для x=4: f(4,1) = f(1, 4 mod 1) = f(1,0) = 1 f(4,2) = f(2, 4 mod 2) = f(2,0) = 2 f(4,3) = f(3, 4 mod 3) = f(3,1) = f(1, 3 mod 1) = f(1,0) = 1 f(4,4) = f(4, 4 mod 4) = f(4,0) = 4 2) для a = 17 количество делителей будет равно 2 (17 делится без остатка на 1 и на 17, то есть является простым числом). K = 2. 3) количество различных значений входной переменной a из интервала от 1 до 30 (включая границы), при которых программа выдаёт тот же ответ (k=2), что и при входном значении a = 17, будет равно количеству простых чисел в интервале [1, 30]. Это числа 2, 3, 5, 7, 11, 13, 17, 19, 23, 29. Всего их 10. Ответ: 10.



полная версия страницы