Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Найти количество делителей заданного числа n, заданного в диапазоне 1 <= n <= 10^18 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выделить в одномерном массиве знакочередующийся подмассив http://www.cyberforum.ru/cpp-beginners/thread693049.html
Выделить в одномерном массиве знакочередующийся подмассив....помогите плиз!
C++ Не могу разобраться с qmake С помощью QtDesigner создал 2 файла gotocelldialog.ui и main.cpp в папке gotocell , запускаю: qmake -project появляется gotocell.pro далее запускаю qmake и он создает мне две папки: Debug,... http://www.cyberforum.ru/cpp-beginners/thread693048.html
Вложенные циклы C++
Написать программу которая выводит рисунок * ** * * **** с помощью вложенных циклов
C++ Компилятор
Привет) Подскажите ,пожалуйста, по работе компилятора, он(компилятор) берет исходный код и работает с ним как с текстом, потом через ассемблерные вставки генерирует exe? Важен момент с исходным...
C++ Оперделить общую массу предметов (через цикл) http://www.cyberforum.ru/cpp-beginners/thread693022.html
Доброго времени суток. Прошу вас помочь с программой: Известна масса каждого из 12 предметов. Определить массу всего набора (необходимо выполнить через цикл, не через массив) Очень надеюьсь на вашу...
C++ Найти ошибки, которые не дают сделать асинхронный сервер Хотелось мне сделать обертку вокруг асио. Чтобы обьект класса в одно время был сервером, в другое клиентом. Чтобы все быстро бегало, захотелось асинхронностью занятся. В итоге, как сервер он не... подробнее

Показать сообщение отдельно
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
09.11.2012, 15:35
Насколько большое N?
Как вариант, простейший алгоритм за O(sqrt(n)).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
int count_of_divisors(int n)
{
    int res = 0;
 
    for (int i = 2; i * i <= n; ++i)
        if (n % i == 0)
            res += 2 - (i *i == n);
 
    return res + 2 - (n == 1);
}
 
int main()
{
    std::cout << count_of_divisors(5040) << std::endl;
}
Будет укладываться в секунду для чисел примерно до 10^13. Более быстрые алгоритмы уже не так тривиальны.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru