ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.11.2023
Просмотров: 250
Скачиваний: 14
делитель больше его квадратного корня, то обязательно будет иметь и делитель меньше него. Это позволяет сократить количество делений, что улучшает эффективность алгоритма.
Чтобы найти число h, при котором делитель и результат деления равны, можно представить N в виде произведения двух чисел: h и q, где h <= q. Тогда при увеличении h, q будет уменьшаться, и наоборот. При этом, если оба числа равны, то они должны быть равны квадратному корню из N. Таким образом, число h будет равно квадратному корню из N.
Оптимизированный интервал увеличения делителя будет от 2 до
Если в этом интервале не найдено делителей, то число N является простым. Это позволяет существенно уменьшить количество делений и значительно улучшить эффективность алгоритма для больших чисел.
Блок-схема последнего варианта алгоритма представлена ниже:
Задание 2
Составить алгоритм (в виде блок-схемы) который бы считал количество чисел в разных диапазонах.
Допустим, у нас есть 4 диапазона чисел 1-25, 26-50, 51-75, 76-100. Как подсчитать количество простых чисел содержащихся в каждом из этих диапазонов?
С первым диапазоном сложностей не возникает. Создаем счетчик. Проверяем последовательно каждое число диапазона, если оно простое прибавляем к счетчику единицу. Но как реализовать алгоритм со вторым и последующими диапазонами?
1 вариант: на примере второго диапазона. Создаем счетчик. Проверяем последовательно каждое число от 1 до верхней границы второго диапазона, если оно простое прибавляем к счетчику единицу. Затем из значения счетчика вычитаем количество предыдущего (первого) диапазона. В чем будут заключаться отрицательные стороны работы алгоритма?
Отрицательные стороны алгоритма в первом варианте заключаются в том, что для подсчёта количества простых чисел в текущем диапазоне необходимо каждый раз считать количество простых чисел во всех предыдущих диапазонах. Временная сложность в таком случае практически равна
, где N – общее количество чисел в диапазонах
, а m – количество чисел в диапазоне от 2 до текущего числа, так как внутри перебора мы так же осуществляем проверку на то, что число простое, а она выполняется за
в лучшем варианте из задания 1.
2 вариант: можно последовательно перебирать только числа данного диапазона. Это ускорит работу алгоритма, но вместе с тем усложнит его.
Сравнить во сколько второй вариант алгоритма работает быстрее чем первый, для каждого из четырех диапазонов.
Для каждого из диапазонов второй алгоритм работает быстрее в N раз, так как не нужно выполнять перебор предыдущих диапазонов.
Блок-схема последнего варианта алгоритма представлена ниже: