Задача
Пусть d(n) определяется как сумма делителей n (числа меньше n, делящие n нацело).
Если d(a) = b и d(b) = a, где a ≠ b, то a и b называются дружественной парой, а каждое из чисел a и b - дружественным числом.
Например, делителями числа 220 являются 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 и 110, поэтому d(220) = 284. Делители 284 - 1, 2, 4, 71, 142, поэтому d(284) = 220.
Подсчитайте сумму всех дружественных чисел меньше 10000.
Решение
Ну в общем опять двадцать пять, нас заставляют искать делители. Мне это уже поднадоело, поэтому я решил совсем нагло погуглить, вдруг есть какие-то более волшебные способы решения. Но судя по всему, лучше чем поиск делителей перебором ничего не придумано.
Поэтому с чистой совестью повторю код из прошлых задач. Функция нахождения делителей, а также их суммы:
Маленькое отличие от предыдущих задач в том, что 1 тоже считается делителем.
Расчёт:
И результат:
Ссылка на онлайн-компилятор языка C с текстом программы
Ну и наверно больше добавить нечего, всё это обсосано в предыдущих задачах, так что подождём, когда появятся более интересные задачи.
Подборка всех задач: