0 / 0 / 0
Регистрация: 08.05.2019
Сообщений: 3
|
||||||
1 | ||||||
Максимальное количество делителей в диапазоне08.05.2019, 18:55. Показов 13040. Ответов 5
Здравствуйте, нужна помощь по оптимизации программы.
Вот сама программа
(1 ⩽ a ⩽ b ⩽ 106, b − a ⩽ 3000). ПРи этом ограничение по времени 2 секунды При крупных числах очень долго производит операции и не укладывается во время.
0
|
08.05.2019, 18:55 | |
Ответы с готовыми решениями:
5
Максимальное количество делителей Максимальное количество делителей Максимальное количество делителей числа Найти числа, имеющие максимальное количество различных делителей Найти номер элемента списка, имеющего максимальное количество целочисленных делителей |
08.05.2019, 20:51 | 2 | |||||
WillyamAnsuok, Таких тем было уже несколько, и однозначно можно сказать, что при больших числах напрямую перебором поиск делителей происходит очень долго, выполняется часами. Может существуют какие то математические алгоритмы для быстрого поиска делителей, я не знаю.
Если на практике, а не для тестирующей программы понадобиться искать делители, то я знаю только один, быстро работающий способ. Создать таблицу простых чисел, заранее их найдя, и потом использовать эту таблицу для поиска делителей. Но это не для тестирующей программы. Кстати в Википедии есть таблица с 500 первыми простыми числами.
1
|
0 / 0 / 0
Регистрация: 08.05.2019
Сообщений: 3
|
|
08.05.2019, 21:02 [ТС] | 3 |
Viktorrus, Спасибо, я уже пока сидел вывел и для больших чисел формулу.
Нужно смотреть от а до корня из б, и потом, если корень из б иррациональный, то просто умножаем на 2 кол-во получившихся делителей, если же корень целый, то умножаем на два и вычитаем 1
0
|
0 / 0 / 0
Регистрация: 08.05.2019
Сообщений: 3
|
||||||
08.05.2019, 21:50 [ТС] | 5 | |||||
Viktorrus,
Алгоритм рабочий, но долгий. Сейчас занимаюсь оптимизацией
0
|
09.05.2019, 04:41 | 6 | ||||||||||
WillyamAnsuok, Я оказывается перепутал количество делителей и разложение на простые числа. Буду разбираться.
Добавлено через 1 час 9 минут Вот написал правильный код использующий таблицу.
Ваш код выдает число 2520. Оно имеет 48 делителей. У меня выдает число 3360 , которое имеет тоже 48 делителей. У этих двух чисел максимальное количество делителей в диапазоне от 500 до 3500.
0
|
09.05.2019, 04:41 | |
09.05.2019, 04:41 | |
Помогаю со студенческими работами здесь
6
Найти в диапазоне от M до N число с наибольшим количеством делителей. Функция: количество делителей заданного числа Найти среди чисел то, которое имеет максимальное количество делителей и то, у которого сумма делителей максимальна Найти все числа в диапазоне от M до N, имеющие ровно k делителей. Функция: количество делителей заданного числа Максимальное количество делителей Распечатать числа в заданном диапазоне у которых количество делителей не менее 3-х Найти максимальное количество делителей у элементов массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |