16 / 16 / 6
Регистрация: 27.12.2010
Сообщений: 163
|
|
1 | |
Найти количество делителей заданного числа n, заданного в диапазоне 1 <= n <= 10^1809.11.2012, 15:17. Показов 15200. Ответов 7
Метки нет (Все метки)
Нужно узнать количество делителей числа N.
Но сложность в том что N большое и перебирать все делите не вариант.
0
|
09.11.2012, 15:17 | |
Ответы с готовыми решениями:
7
Для заданного натурального числа N найти количество его делителей Определить количество делителей заданного числа Разработать функцию, которая для заданного натурального числа N возвращает количество его делителей Найти число меньшее заданного числа n с максимальной суммой делителей. |
Higher
|
||||||
09.11.2012, 15:35 | 2 | |||||
Насколько большое N?
Как вариант, простейший алгоритм за O(sqrt(n)).
1
|
16 / 16 / 6
Регистрация: 27.12.2010
Сообщений: 163
|
|
09.11.2012, 15:46 [ТС] | 3 |
Да вот 1 <= n <= 10^18
и тут по ходу в никакие типы не влезает =(
0
|
64 / 64 / 33
Регистрация: 12.08.2012
Сообщений: 151
|
|
09.11.2012, 15:52 | 4 |
0
|
Higher
|
|
09.11.2012, 15:58 | 5 |
Ну, тут мне уже писать код не хочется, но алгоритм мне видится таким: берем какой-нибудь быстрый алгоритм факторизации со сложностью O(n ^ (1/3) ) или быстрее, и затем, зная факторизацию, можно с помощью комбинаторики подсчитать количество делителей.
0
|
09.11.2012, 18:23 | 6 |
Для решения данной задачи мы воспользуемся одной из теорем комбинаторики.
Теорема. Если существует K классов, содержащих соответственно n1 , n2 , . . . nK элементов, то число различных способов выбора элементов равно (n1 + 1)(n2 + 1)...(nK + 1) Для определенности рассмотрим на примере. В коробке лежат 10 шаров синего, 8 красного и 5 желтого цветов. Сколькими способами можно достать данные шары из коробки? Разумеется, что все шары доставать необязательно, например, можно достать 2 синих, 4 желтых и 3 красных шара, или 1 синий и 5 желтых. А ведь можно и вообще их не доставать, этот случай тоже является случаем выбора шаров, в результате которого получается пустое множество выбранных элементов. Для ответа на этот вопрос следует воспользоваться вышеприведенной теоремой. Мы имеем три класса: Шары синего Желтого Красного цветов Число элементов первого класса равно 10, второго - 8, третьего, соответственно, 5. Тогда общее количество возможных вариантов выбора будет равно S = (10 + 1)(8 + 1)(5 + 1) = 594. То есть число различных способов выбора шаров из коробки равно 594. Эту задачу можно было бы решать и методом полного перебора, что значительно увеличит время выполнения программы. Теперь проведем аналогию между нашей задачей и задачей про шары. Основная теорема арифметики гласит, что любое натуральное число можно представить в виде произведения простых чисел, входящих в разложение данного числа в различных степенях. Классом в нашем случае является простое число. Количеством элементов - степень, в которой это число входит в разложение. Тогда для решения задачи необходимо разложить число x на простые множители, посчитать сколько раз встречается каждое простое число в разложении и перемножить соотвествующие результаты в соответствии с вышеприведенной формулой. Взял с acmp.ru могу показать код, только он на паскале.
1
|
0 / 0 / 0
Регистрация: 08.09.2016
Сообщений: 73
|
|
12.09.2016, 10:09 | 7 |
а что значат эти две строчки? res += 2 - (i *i == n);
return res + 2 - (n == 1);
0
|
12.09.2016, 13:32 | 8 |
0
|
12.09.2016, 13:32 | |
12.09.2016, 13:32 | |
Помогаю со студенческими работами здесь
8
Найти все натуральные числа из заданного промежутка, с заданным количеством делителей Найти первую и последнюю цифры заданного числа; найти сумму цифр заданного числа Найти количество входов заданного числа Рекурсия: вывод всех делителей заданного числа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |