profile
Размещено 3 года назад по предмету Информатика от mnb5757

C++ СИРИУС Числовые функции
Количество всех натуральных делителей натурального числа n обозначается σ0(n). Сумма всех натуральных делителей числа n обозначается σ1(n).

Входные данные

Дано натуральное n≤10^9.

Выходные данные

Выведите σ0(n) и σ1(n).

Примечание

Данную задачу рекомендуется решать путём перебора всех делителей числа до √n.

Примеры
Ввод
6

Вывод
4 12

  1. Ответ на вопрос
    Ответ на вопрос дан alexshor

    Ответ:

    int main()

    {

       unsigned int value = 0;

       std::cout << "input value <= 10^9: ";

       std::cin >> value;

       if (value > 1000000000)

       {

           std::cout << "incorrect value";

           _getch();

           return 0;

       }

       unsigned int i = 1;

       unsigned int count = 0;

       unsigned int sum = 0;

       while (true)

       {

           if ((value % i) == 0)

           {

               unsigned int res = value / i;

               if (res < i)

                   break;

               count += 1;

               sum += i;

               if (res == i)

                   break;

               count += 1;

               sum += res;

           }

           i++;

       }

       // выводим

       printf("%u %u", count, sum);

       _getch(); // экран не закрывается, пока не нажата клавиша

       return 0;

    }

    Объяснение:

    После запроса значения оно проверяется на максимальное значение.

    i - счетчик цикла и одновременно очередной делитель, на который и проверяется возможность деления нацело заданного значения.

    Если результат деления оказался меньше делителя, это означает, что мы перешагнули рубеж в √n и надо прекратить цикл.

    Иначе количество делителей увеличивается на 1 и к сумме прибавляется этот делитель.

    Если результат деления равен делителю, то на этом заканчиваем цикл. Например при вводе 36 последним делителем будет 6 и мы его считаем 1 раз.

    В противном же случае, результат деления - это тоже делитель, поэтому еще раз увеличиваем счетчик количества и увеличиваем на него сумму.

    #SPJ1

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.