Задание 25. Информатика. ЕГЭ. Демо-2025
- Просмотры: 322
- Изменено: 24 ноября 2024
Пусть \(M\) – сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение \(M\) равным нулю.
Напишите программу, которая перебирает целые числа, бо́льшие \(800~000\), в порядке возрастания и ищет среди них такие, для которых \(M\) оканчивается на \(4\). В ответе запишите в первом столбце таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце – соответствующие им значения \(M\).
Например, для числа \(20\) \(М = 2 + 10 = 12\).
Количество строк в таблице для ответа избыточно.
Решение:
C++
#include<iostream>
#include<cmath>
using namespace std;
int min_divisor(int n) {
int ans = 0, t = sqrt(n);
for (int x = 2; x < t + 1; x++)
if (n % x == 0) {
ans = x;
break;
}
return ans;
}
int32_t main() {
int q = 5, n = 800 * 1000;
while(q) {
int d;
n++;
d = min_divisor(n);
if(d && (d + n / d) % 10 == 4) {
cout << n << " " << d + n / d << '\n';
q--;
}
}
}
Ответ:
\(800004 \,\, 400004\)
\(800009 \,\, 114294\)
\(800013 \,\, 266674\)
\(800024 \,\, 400014\)
\(800033 \,\, 61554\)