Код C++: нахождение суммы делителей числа

Чтобы найти сумму всех делителей числа в C++, можно использовать различные методы. Вот несколько подходов:

Метод 1: грубый перебор
Один простой метод — перебрать все числа от 1 до заданного числа и проверить, является ли оно множителем. Если да, прибавьте его к текущей сумме. Вот пример реализации:

#include <iostream>
int sumOfFactors(int number) {
    int sum = 0;
    for (int i = 1; i <= number; ++i) {
        if (number % i == 0) {
            sum += i;
        }
    }
    return sum;
}
int main() {
    int number = 12;
    int result = sumOfFactors(number);
    std::cout << "Sum of factors of " << number << " is " << result << std::endl;
    return 0;
}

Метод 2: оптимизированный подход
Более эффективный подход предполагает итерацию только до квадратного корня из заданного числа. Поскольку факторы существуют парами (за исключением полных квадратов), мы можем найти один фактор и соответствующую ему пару одновременно. Вот пример реализации:

#include <iostream>
int sumOfFactors(int number) {
    int sum = 0;
    for (int i = 1; i * i <= number; ++i) {
        if (number % i == 0) {
            sum += i;
            if (i != number / i) {
                sum += number / i;
            }
        }
    }
    return sum;
}
int main() {
    int number = 12;
    int result = sumOfFactors(number);
    std::cout << "Sum of factors of " << number << " is " << result << std::endl;
    return 0;
}