Задание 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\)