|
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 33
|
||||||
Следует выбрать эффективный алгоритм (по времени) теста простоты числа09.11.2017, 06:16. Показов 1434. Ответов 7
Метки нет (Все метки)
Следует выбрать эффективный алгоритм (по времени) теста простоты числа.
На исследование вам дается два алгоритма: 1. Перебор делителей числа (Проверяем все числа от 2 до n-1 делят ли они заданное число n), 2. Ограниченный перебор делителей числа (Проверяем числа от 2 до делят ли они заданное число n). Необходимо: 1. Реализовать данные алгоритмы, 2. Исследовать их и 3. Составить отчет. Как исследовать алгоритмы? Конечно, перед тем как исследовать алгоритм нужно его реализовать. Далее, вы должны запустить свои программы как минимум 5 раз для каждого набора входных данных (в данной не менее 5 раз для N.1, 5 раз для N.2 и 5 раз для N.3, где N – номер вашего варианта). При каждом запуске вам необходимо измерять, сколько времени потребуется алгоритму для решения задачи (т.е. у вас будет 5 измерений для N.1, 5 измерений для N.2 и 5 измерений для N.3, по каждому алгоритму). Далее находите средние арифметические значения для каждого входного параметра (для N.1, N.2 и N.3) отдельно для первого и второго алгоритмов. По этим средним значениям вы строите график зависимости времени работы алгоритма от величины числа (для первого и второго алгоритма отдельно). Изучая эти графики вы и должны строить ваши выводы и суждения. Подсказки: 1. Для больших входных данных, например, для 2-го и 3-го наборов, лучше использовать тип данных long long или __int64. 2. Для измерения времени работы алгоритма использовать функцию clock() (header file – сtime). Пример измерения длительности работы цикла:
1. Общая информация о работе, т.е. должны быть даны ответы на следующие вопросы: «о чем эта работа?», «какие алгоритмы были исследованы?». 2. Описание алгоритмов: Здесь вы должны привести словесное описание, блок схемы всех алгоритмов, которые вы реализовали. 3. Описание тестовых данных, т.е. ответы на следующие вопросы: «Какие тестовые данные вы использовали?», «Почему именно такие?». И должны привести сами тесты (наборы данных). 4. Результаты исследований. Здесь вы должны привести результаты ваших измерений. Обычно сравнивают средние значения показателей нескольких прогонов программ. Следовательно, нужно запустить программу минимум 5 раз с различными входными данными одного типа и объема и сравнивать средние арифметические значения. 5. Выводы. Ваши соображения и суждения, основанные на полученных результатах. 6. Исходные коды программ. Входные данные 1 7358 2 800000019043 3 373865754898010773
0
|
||||||
| 09.11.2017, 06:16 | |
|
Ответы с готовыми решениями:
7
Предложить эффективный алгоритм умножения числа на дробь в длинной арифметике
Эффективный алгоритм для задачи |
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
|
| 09.11.2017, 06:56 | |
|
Интересная задача, всё разжевано. Что от нас то требуется? Написать программу, вывести графики и отчет составить?
0
|
|
|
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 33
|
|
| 09.11.2017, 07:04 [ТС] | |
|
Скорее всего да
0
|
|
| 09.11.2017, 07:36 | |
|
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 09.11.2017, 09:53 | ||
|
И на первый взгляд видно, что алгоритм 1 - очень плох. Видимо, целью задания и является наглядная демонстрация этого факта.
0
|
||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
||
| 09.11.2017, 13:48 | ||
|
0
|
||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 09.11.2017, 14:07 | ||
|
А так все зависит от того, что именно нужно. Если проверить одно число - самое простое - деление на все k от 2 до k*k <=n. Если составлять список простых, то решето Эратосфена. Все эти подходы могут быть по разному модифицированы. Вот тут довольно плодотворное обсуждение Быстрая проверка натурального числа на простоту
0
|
||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
||||
| 09.11.2017, 14:30 | ||||
|
0
|
||||
| 09.11.2017, 14:30 | |
|
Помогаю со студенческими работами здесь
8
Эффективный алгоритм перетасовки элементов массива
Эффективный алгоритм поиска простых чисел на С++
Алгоритм на проверку простоты суммы двух положительных чисел Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|