Ускорить программу на Python18.11.2017, 10:57. Показов 3816. Ответов 30
Метки нет (Все метки)
Есть простенькая задачка. Я её решил на C++, но на Python не получается, потому что язык более медленный, и не удаётся уложиться в 1 секунду. Но я знаю, что на Python также можно решить эту задачу. Но как?
1. Задача Кликните здесь для просмотра всего текста
Простые числа (Время: 1 сек. Память: 16 Мб Сложность: 25%) Необходимо вывести все простые числа от M до N включительно. Входные данные Входной файл INPUT.TXT содержит два натуральных числа M и N, разделенных пробелом (2 ≤ M ≤ N ≤ 300 000) Выходные данные В выходной файл OUTPUT.TXT выведите все простые числа от M до N в порядке возрастания, по одному в строке. Если таковых чисел нет, то следует вывести «Absent». Пример: INPUT.TXT 2 5 OUTPUT.TXT 2 3 5 INPUT.TXT 4 4 OUTPUT.TXT Absent 2. Решение на C++ (решение правильное) Кликните здесь для просмотра всего текста
3. Решение на Python (не укладываюсь в 1 секунду) Кликните здесь для просмотра всего текста
0
|
|||||||||||
| 18.11.2017, 10:57 | |
|
Ответы с готовыми решениями:
30
Ускорить программу Python
Как ускорить ввод данных в Python |
|
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
|
||||||
| 18.11.2017, 12:11 | ||||||
1
|
||||||
| 18.11.2017, 12:15 [ТС] | |
|
Ваша программа не прошла 14 тест. Было потрачено 1,2 секунды на проверяющем сервере.
Но Ваша программа -- уже шаг вперёд по сравнению с моей. Моя программа на Python не прошла 12 тест. Ваша сделала два шага вперёд. Нет, вру. Моя программа на Python прошла 15 тестов. А ваша только 14. То есть Ваша программа -- один шаг назад.
0
|
|
|
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
|
|
| 18.11.2017, 12:26 | |
|
ссылку можно на систему тестирования?
0
|
|
|
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
|
|
| 18.11.2017, 13:20 | |
|
и где ссылка?
0
|
|
|
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
|
|
| 18.11.2017, 13:36 | |
|
Тут
0
|
|
| 18.11.2017, 13:44 [ТС] | |
|
Добавлено через 6 минут Эту ссылку движок cyberforum.ru удаляет автоматически. Я только что это сделал, и ссылка была удалена. Вот ещё раз попробую. Надо поставить букву a перед cmp.ru http://cmp.ru/asp/do/index.asp... roblem=853
0
|
|
|
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
|
|
| 18.11.2017, 13:45 | |
|
ок посмотрю
0
|
|
|
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
|
||||||
| 18.11.2017, 15:16 | ||||||
|
а такой способ?
1
|
||||||
| 18.11.2017, 16:21 [ТС] | |
|
В задаче нужно в диапазоне найти простые числа от m до n. А у вас простые числа от 2 до некого числа n.
Добавлено через 1 минуту И компьютер на сервере намного слабее, чем ваш. Добавлено через 7 минут Пока мой лучший результат -- тест номер 15 (на этом тесте идёт завал). Итог 1,171 секунда. Мне нужно улучшить свой алгоритм на 0.171, чтобы пройти этот тест на Python.
0
|
|
|
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
|
|
| 18.11.2017, 16:31 | |
|
0
|
|
| 18.11.2017, 16:55 [ТС] | |||||||||||
|
Вот поменял. К сожалению, ваша программа не проходит даже первого теста, если m=2 и n=5
Ваша программа просто вообще неверная.
0
|
|||||||||||
|
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
|
||||||
| 18.11.2017, 18:44 | ||||||
Сообщение было отмечено jvf как решение
Решение
это ошибка округления
1
|
||||||
| 18.11.2017, 18:53 [ТС] | ||||||
|
Задача решена. Поздравляю! Тест пройден!!!
Кто-нибудь сможете предложить ещё более быстрый алгоритм?
0
|
||||||
|
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
|
|
| 18.11.2017, 19:04 | |
|
1
|
|
| 18.11.2017, 20:24 [ТС] | |||||||||||
|
Предыдущий вариант показал среднее время в 0,656 секунды по 15-ти или 20-ти тестам. Всего лишь одна строчка улучшает скорость в два раза.
Добавление:
0
|
|||||||||||
|
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
|
|||||||||||
| 18.11.2017, 20:37 | |||||||||||
|
у меня быстрее всего работает вариант с set
1
|
|||||||||||
| 18.11.2017, 21:03 [ТС] | ||||||
|
Вот ваш вариант с множествами (возможно, его можно улучшить) -- он не засчитывается, потому что автоматическая система проверки на сервере пишет, что превышен лимит памяти. 19 Mb (на 15-том тесте). Тот вариант, который был ранее, засчитан, потому что и по времени уложился, и памяти занимает не так много: всего 4 Мб.
Там есть и ограничение по памяти, не более 16 Мб.
0
|
||||||
| 18.11.2017, 21:03 | |
|
Помогаю со студенческими работами здесь
20
Способы ускорить выполнение программы Python Ускорить программу на Python Ускорить код на Python Как ускорить выполнение программы на Python?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|