0 / 0 / 0
Регистрация: 08.04.2020
Сообщений: 17
|
||||||
На основе теоремы Вильсона реализовать тест проверки числа на простоту04.11.2021, 23:41. Показов 1424. Ответов 8
Здравствуйте, прошу помощи
![]() На основе теоремы Вильсона реализовать тест проверки числа на простоту, причем программа должна быстро отрабатывать при числах состоящих из 60 знаков. Теорема Вильсона Если p простое число, то формула(p-1)!+1 Проблема заключается в факториале, с числами в 60 знаков мой код будет работать оооочень долго, ниже код. Прошу помочь с ускорением, чтобы с числами из 60 знаков считалось не очень долго ![]() import time
0
|
04.11.2021, 23:41 | |
Ответы с готовыми решениями:
8
Реализовать эффективный алгоритм проверки числа на простоту и подсчета количества делителей натурального числа Проверка числа на простоту с помощью малой теоремы Ферма
|
1674 / 1114 / 294
Регистрация: 05.10.2014
Сообщений: 5,471
|
|
04.11.2021, 23:51 | |
Я думаю что речь идет о том чтобы в процессе работы программы получались числа не более чем 60-значные.
Факториалы 60-значных чисел это немножко многовато) Так что ваша программа должна проверять на простоту числа до 47 (сорока семи). Но длинную арифметику писать надо, не парьтесь, это просто
0
|
0 / 0 / 0
Регистрация: 08.04.2020
Сообщений: 17
|
|
05.11.2021, 00:02 [ТС] | |
у меня спокойно проверяются числа и из восьми знаков, например, 12345678 - за 622 секунды и результат очевидно составное.
Этот результат не удовлетворяет по времени, слишком долго, да и число надо в 5 раз больше по количеству символов. Какую функцию можно добавить для ускорения процесса?
0
|
![]() |
|||||||||||
07.11.2021, 13:26 | |||||||||||
![]() Решение
zi_romanov,
Вам как бы намекнули, что не стоит пытаться вычислять факториал, при больших числах он не поместится на вашем крутом компьютере. Но факториал вам и не нужен, вам нужна проверка на его делимость на p. Поэтому находите остаток от деления после каждого умножения и на следующем цикле используйте этот остаток. Типа
Добавлено через 10 минут Проверять на делимость можно внутри цикла, тогда вычисления ускорятся в случае составного p. (А в случае простого немного замедлятся.) Наверно, еще можно как-то ускорить.
1
|
07.11.2021, 13:26 | ||||||
Помогаю со студенческими работами здесь
9
Рекурсивная функция проверки числа на простоту Быстрый способ проверки числа на простоту Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
|
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
|
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
|
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
|
Агрегаты и сущности в DDD микросервисах
Javaican 10.04.2025
Разработка современных программных систем часто приводит на распутье: монолит или микросервисы? Даже при выборе микросервисной архитектуры многие команды сталкиваются с проблемой правильного. . .
|
Многопоточность в C#: Task и параллельное программирование
UnmanagedCoder 10.04.2025
Современные процессоры уже давно перестали наращивать тактовую частоту в пользу увеличения количества ядер. Это создало интересную ситуацию: разработчики, привыкшие к последовательному. . .
|
Линейное решение нелинейной задачи с помощью арктангенса для метода обработки данных из double buffering.
Hrethgir 10.04.2025
Публикация в доработке, метод арктангенса в комментариях внизу.
Вообще изначально я пренебрёг квадратурой числа, но потом понял, что для вычисления приблизительного значения - сгодится, формулу. . .
|
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
|
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
|
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
|