0 / 0 / 0
Регистрация: 28.01.2020
Сообщений: 28
|
|
Функция проверки числа на простоту11.02.2020, 13:22. Показов 17395. Ответов 18
Метки нет Все метки)
(
10. **Написать функцию, которая возвращает истину, если переданное число простое, и ложь, если не простое.
Простое число – это число, которое делиться ТОЛЬКО на 1 и на себя (2, 5, 7, 11, 13, 17, 19, 23, 29 и т.д.).
0
|
11.02.2020, 13:22 | |
Ответы с готовыми решениями:
18
Рекурсивная функция проверки числа на простоту
Программа проверки числа на простоту. Не могу понять как она работает. |
Диссидент
![]() ![]() 27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
|
||||||
11.02.2020, 16:12 | ||||||
![]() Решение
Patrik1001, В низ страницы не заглядывал?
1
|
Диссидент
![]() ![]() 27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
11.02.2020, 16:50 | |
Можно рассматривать числа 6n+-1 или даже 30n +-1 +-7 +- 11 +-13. Небольшое ускорение это даст. В разы. Но разы - это не повод. Вот ежли бы порядки...
![]()
1
|
Параллельный Кот
![]() 1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|
11.02.2020, 16:56 | |
alexu_007, в рамках поставленной задачи не имеет смысла, ИМХО. Останутся числа, кратные 3, 5, 7 и т.д., делить на которые тоже нет необходимости. Только код усложнится.
А вот если взять таблицу простых чисел, то будет уже что-то ![]()
1
|
Диссидент
![]() ![]() 27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
11.02.2020, 17:07 | |
Тут дело такое. Если нужно определить простоту одного какого-то числа, то не стоит и огород городить. А вот если требуется находить простоту многих чисел, тогда да, таблица делу поможет. Хотя для больших чисел имеет смысл и для одного...
В общем, дилемма простая, как весь наш мир "Скорость - Память" ![]()
1
|
![]() 596 / 379 / 184
Регистрация: 21.02.2011
Сообщений: 5,130
|
||||||
11.02.2020, 21:06 | ||||||
0
|
Диссидент
![]() ![]() 27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
|
||||||
11.02.2020, 21:19 | ||||||
Каждый раз вычислять sqrt при проверки окончания цикла? Побойтесь Бога!
Тогда уж так
0
|
Параллельный Кот
![]() 1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|
11.02.2020, 22:52 | |
Вот интересно стало, есть ли какое-то практическое применение у способа с перебором делителей, чтобы заниматься его оптимизацией. Студенту сдать лабу и так сойдет. Для больших чисел существуют более специфичные алгоритмы. А нужно ли где-то на практике проверять простоту не очень больших чисел?
1
|
11.02.2020, 23:17 | |
0
|
Параллельный Кот
![]() 1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|
12.02.2020, 17:23 | |
if (n % 2 == 0) ... перед циклом.Но вопрос немного в другом. Цель такой оптимизации? Ради оптимизации. Сложность как была Согласен с Вами, оптимизировать можно. Но почему именно в 2 раза? Если пойти и дальше, избавимся от 9, 27, ...,
1
|
732 / 693 / 110
Регистрация: 29.05.2015
Сообщений: 4,184
|
|
12.02.2020, 20:16 | |
Вы это серьёзно? n%2 выполняется один раз, а цикл уменьшается вдвое.
Найти простые числа (например решетом Эрастофена) и делить на них - это имеет смысл, если нужно много чисел проверять на простоту. Тогда один раз отработает решето и много раз поиск простых. На одном числе ускорения не даст.
0
|
Диссидент
![]() ![]() 27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
12.02.2020, 21:42 | |
Не по теме: alexu_007, вашу бы энергию и убежденность в очевидных вещах - как бы в мирное русло направить? valen10, вот такая схема вырисовывается. По дороге делений выясняем простоту очередных делителей. И в случае удачи - добавляем их в массив простых. Не знаю, не понимаю пока, даст ли это хоть какой эффект при выяснении для одного числа. Для кучи - даст несомненно. Насколько? Если в разы - это неинтересно. Если на порядок - тогда имеет смысл. ![]()
0
|
Параллельный Кот
![]() 1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|
19.02.2020, 22:52 | |
Вот тут не совсем понял, как можно эффективно это сделать. Если каждый новый делитель проверять на простоту тем же алгоритмом, то картина складывается не очень хорошая (могу заблуждаться, не проверял, честно).
Я правильно понял, что в результате этих действий у нас начнет формироваться таблица простых чисел? Если да, то можно, наверное, теорему о распределении простых чисел применить. Допустим, мы построили уже таблицу простых чисел от 2 до k. Тогда числа, входящие в интервал Не по теме: Математик из меня не очень. Байт, и почему мне кажется, что Вы знаете решение :D
0
|
Диссидент
![]() ![]() 27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
19.02.2020, 23:14 | |
не-а.. Не знаю. Просто пришло в голову, что можно попытаться совместить эти 2 подхода - перебор и решето. Но, имхо, какого-то революционного прорыва это не даст.
Простые числа - задача древняя. Более того - реально востребованная в "промышленности". За нахождение хорошего простого числа можно и слегка пополнить свой тощий кошелек. ![]() ![]()
0
|
732 / 693 / 110
Регистрация: 29.05.2015
Сообщений: 4,184
|
|
20.02.2020, 09:43 | |
Программа, демонстрирующая работу 2-х алгоритмов решета эрастофена - простого и только с четными числами. Считает количество простых в заданном диапазоне, их сумму и время работы алгоритма. К сожалению, простой эрастофен крашится при диапазоне более 2,1 млрд, при 4,2 удалось проверить только вторым:
0
|
20.02.2020, 09:43 | ||||||
Помогаю со студенческими работами здесь
19
Написать программу проверки числа на простоту и в противном случае разложения его на простые множители
Функция проверки делимости числа на 8
Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Списки и кортежи в Python: различия, особенности, применение
py-thonny 13.04.2025
Python славится своей гибкостью при работе с данными. В арсенале языка есть две основные последовательные структуры данных, которые программисты используют ежедневно — списки и кортежи. Эти структуры. . .
|
Middleware в ASP.NET Core
UnmanagedCoder 13.04.2025
В ASP. NET Core термин "middleware" занимает особое место. Что же это такое? Middleware представляет собой программные компоненты, которые формируют конвейер обработки HTTP-запросов в приложении. . . .
|
Таблицы лута в Unity с MinMaxCurve и AnimationCurve
GameUnited 12.04.2025
Создание сбалансированного лута в играх — задача не из простых. Разработчики постоянно ищут способы настройки систем выпадения предметов, которые будут одновременно справедливыми для игроков и. . .
|
std::expected в C++: Управление ошибками
bytestream 12.04.2025
Обработка ошибок всегда была важной и одновременно сложной задачей в программировании на C++. На протяжении долгого времени разработчики использовали различные подходы: возвращаемые коды ошибок,. . .
|
Nullable типы и операторы объединения null в C#
UnmanagedCoder 12.04.2025
Многие шутят, что null — это миллиардная ошибка в программировании. И в этой шутке только доля шутки. Тони Хоар, создатель null-ссылки, сам назвал её своей "ошибкой на миллиард долларов". Почему?. . .
|
Аутентификация и авторизация JWT в микросервисах с API Gateway
stackOverflow 12.04.2025
В традиционных монолитных приложениях безопасность часто реализуется как единый защитный периметр - пользователь проходит аутентификацию один раз, после чего получает доступ ко всем функциям системы. . . .
|
TypeScript: Интерфейсы vs Типы
run.dev 12.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
|
Управление топиками и разделами Kafka
Javaican 12.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
|
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
|
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
|