Анализ различных методов поиска простого числа в Python
08.09.2021
Если вы участвуете в соревновательном программировании, вы, возможно, знакомы с тем фактом, что вопросы, связанные с простыми числами, являются одним из вариантов, который может выбрать тот, кто ставит задачи. Здесь мы обсудим, как оптимизировать вашу функцию, которая проверяет простое число в заданном наборе диапазонов, а также рассчитает время их выполнения.
По определению, простое число - это целое положительное число, которое делится только на себя и 1. Например: 2,3,5,7. Но если число можно разложить на меньшие числа, оно называется составным числом. Например: 4 = 2 * 2, 6 = 2 * 3
И целое число 1 не является ни простым, ни составным числом. Проверить, что число является простым, легко, но для эффективной проверки требуются некоторые усилия.
Способ 1:
Давайте теперь перейдем к самой первой функции, чтобы проверить, является ли число, скажем n, простым или нет. В этом методе мы проверим все делители от 2 до n-1. Мы пропустим 1 и n. Если n делится на любой из делителей, функция вернет False, иначе True.
Ниже приведены шаги, используемые в этом методе:
- Если целое число меньше 1, возвращается False.
- Если данное число делится на любое из чисел от 2 до n, функция вернет False.
- В противном случае он вернет True
Python3
Выход:
В приведенном выше коде мы проверяем все числа от 1 до 100000, являются ли эти числа простыми или нет. Как показано, у него огромная среда выполнения. Бег занимает около 1 минуты. Это простой подход, но для его выполнения требуется много времени. Таким образом, это не является предпочтительным в соревновательном программировании.
Способ 2:
В этом методе мы используем простой трюк, уменьшая количество проверяемых делителей. Мы обнаружили, что есть тонкая линия, которая действует как зеркало, поскольку показывает факторизацию под линией и факторизацию над линией в обратном порядке. Линия, разделяющая множители на две половины, является линией квадратного корня из числа. Если число является точным квадратом, мы можем сдвинуть строку на 1 и получить целочисленное значение линии, которая делится.
- Если целое число меньше 1, возвращается False.
- Теперь мы уменьшаем числа, которые необходимо проверить, до квадратного корня из заданного числа.
- Если данное число делится на любое из чисел от 2 до квадратного корня из числа, функция вернет False.
- В противном случае он вернет True
Python3
Выход:
В приведенном выше коде мы проверяем все числа от 1 до 100000, являются ли эти числа простыми или нет. Это занимает сравнительно меньше времени, чем предыдущий метод. Это немного сложный подход, но он имеет огромное значение во времени выполнения кода. Таким образом, это более предпочтительно в соревновательном программировании.
Способ 3:
- Если целое число меньше 1, возвращается False.
- Если число равно 2, он вернет True.
- Если число больше 2 и делится на 2, оно вернет False.
- Теперь мы проверили все четные числа. Теперь поищите нечетные числа.
- Если данное число делится на любое из чисел от 3 до квадратного корня из числа, пропуская все четные числа, функция вернет False
- В противном случае он вернет True
Python3
Выход:
В приведенном выше коде мы проверяем все числа от 1 до 100000, являются ли эти числа простыми или нет. На выполнение программы уходит сравнительно меньше времени, чем на все предыдущие методы. Это наиболее эффективный и быстрый способ проверить простое число. Поэтому он наиболее предпочтителен в соревновательном программировании. В следующий раз при попытке задать какой-либо вопрос в соревновательном программировании используйте этот метод для достижения наилучших результатов.
Метод сита:
Этот метод печатает все простые числа, меньшие или равные заданному числу n. Например, если n равно 10, на выходе должно быть «2, 3, 5, 7». Если n равно 20, на выходе должно быть «2, 3, 5, 7, 11, 13, 17, 19».
Этот метод считается наиболее эффективным для генерации всех простых чисел, меньших заданного числа n. Считается, что это самый быстрый способ создания списка простых чисел. Этот метод не подходит для проверки конкретного числа. Этот метод предпочтительнее для создания списка всех простых чисел.
ПОПУЛЯРНЫЕ СТАТЬИ
-
Акции
У Фитца есть отличные новости для нынешних членов Фитц Клуба. Пригласите друга, который не является членом клуба, и вы мгновенно получите 15 долларов Promo Cash.
Узнать больше7 советов по безопасности на CraigslistВы впервые продаете или покупаете что-то на Craigslist? Наши семь мер предосторожности Craigslist помогут подготовить вас к вашей первой транзакции!
Узнать большеКак купить обзоры Yelp [пример из практики]У вас потрясающий бизнес. Вы невероятно упорно трудились, чтобы создать свои продукты или услуги, нанять непобедимый персонал и построить компанию, которой вы безумно гордитесь.
Узнать большеБез кейвордаРуководство для учителей по проблеме инопланетных захватчиков ODYSSEY Формат: Навыки резюме статьи / страницы
Узнать большеBlack Jack Genetica - Часто задаваемые вопросы об онлайн-казиноSowohl Software-Entwickler также как Casinobetreiber haben viel Arbeit in die Spiele und Die Verwendete Software gesteckt, выбрав опцию оплаты счета по телефону в казино и следуя нашим инструкциям.
Узнать больше