Информатика ЕГЭ, 25 задание Рассмотрим произвольное натуральное число, представим его всеми возможными в виде произведения двух натуральных чисел и найдём для каждого такого произведения разность сомножителей. Например, для числа 18 получим: 18 = 18*1 = 9*2 = 6*3, множество разностей содержит числа 17, 7 и 3. Подходящей будем называть пару сомножителей, разность между которыми не превышает 110. Найдите все натуральные числа, принадлежащие отрезку [1000000; 1500000], у которых есть не менее трёх подходящих пар сомножителей. В ответе перечислите найденные числа в порядке возрастания, справа от каждого запишите наибольший из всех сомножителей, образующих подходящие пары.
Вычислим примеры. Для этого приведем дроби к общему знаменателю.
Так как общий знаменатель число 45, то 7/9 дробь умножим на 5/5. После этого делаем прибавку.
1) 2/45 + 7/9 = 2/45 + 7/9 × 5/5 = 2/45 + 35/45 = 37/45;
Дробь 2/5 умножим на 5/5.
2) 2/5 + 4/25 = 2/5 × 5/5 + 4/25 = 10/25 + 4/25 = 14/25;
Найдем произведение дробей 1/6 и 3/3, чтобы получили знаменатель 18. Результат прибавки можно сократить в два раза.
3) 1/6 + 7/18 = 1/6 × 3/3 + 7/18 = 3/18 + 7/18 = 10/18 = 5/9.
Делаем умножение 6/7 на 6/6.
4) 19/42 + 6/7 = 19/42 + 6/7 × 6/6 = 19/42 + 36/42 = 55/42;
Умножим дробь 5/8 на 4/4.
5) 3/32 + 5/8 = 3/32 + 5/8 × 4/4 = 3/32 + 20/32 = 23/32;
6) 3/8 + 1/56 = 3/8 × 7/7 + 1/56 = 21/56 + 1/56 = 22/56 = 11/28.
var
n, k, s, sa: integer;
begin
k := 0;
s := 0;
sa := 0;
writeln('Введите последовательность, окончание ввода - число 0');
repeat
read(n);
if (n mod 4 = 0) and (n mod 10 = 2) then s := s + n;
if (n <> 0) and (n < 100) then inc(k);
sa := sa + n
until n = 0;
readln;
writeln('Сумма чисел, кратных 4 и заканчивающихся на 2, равна ', s);
writeln('Количество чисел, не больших 100, равно ', k);
writeln('Сумма последовательности равна ', sa);
readln
end.
Объяснение: