![]() 0 / 0 / 0
Регистрация: 31.08.2013
Сообщений: 26
|
|
Алгоритм, который устанавливает – является ли число простым01.04.2015, 14:27. Показов 27033. Ответов 24
Метки нет Все метки)
(
5. Алгоритм, который устанавливает – является ли число N
простым. Число называется простым, если оно делится нацело без остатка только на себя и на 1.
0
|
01.04.2015, 14:27 | |
Ответы с готовыми решениями:
24
Является ли число простым
Определить, является ли число простым |
![]() 2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
|
||||||
01.04.2015, 18:36 | ||||||
![]() Решение
1
|
15 / 15 / 12
Регистрация: 01.02.2014
Сообщений: 62
|
||||||
01.04.2015, 18:36 | ||||||
![]() Решение
1
|
Модератор
![]() ![]() ![]() |
||||||
02.04.2015, 08:29 | ||||||
Joy,
Добавлено через 1 минуту Плюс, можно отдельно проверить на 2, а потом только на нечетные, вдвое сократит количество делений. Добавлено через 2 минуты А можно втихаря составлять табличку простых и проверять делимость только на них, будет еще быстрее. Но алгоритм выйдет несколько запутаннее.
3
|
![]() 2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
|
||||||
02.04.2015, 08:56 | ||||||
1
|
Модератор
![]() ![]() ![]() |
||||||
02.04.2015, 10:18 | ||||||
Вариация на тему:
1
|
![]() 1682 / 1097 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
|
||||||
02.04.2015, 15:18 | ||||||
0
|
Модератор
![]() ![]() ![]() |
||||||
02.04.2015, 18:42 | ||||||
Новичок,
не надо так писать:
Во 2-х, незачем Round() (возможен лишний шаг), когда достаточно Trunc().
1
|
Модератор
10151 / 5488 / 3371
Регистрация: 17.08.2012
Сообщений: 16,779
|
||||||
08.04.2015, 21:57 | ||||||
Формула, однако, особенного выигрыша не даёт. На её основе у меня вот что нарисовалось:
Добавлено через 14 минут Хотя... При обработке массива чисел будут исключаться n < 25 и четыре числа из шести... Не так уж и плохо. Ну что, люди, раскритикуйте меня, что ли, а то у меня, подозреваю, ложное, самомнение что-то зашевелилось...
0
|
Модератор
![]() ![]() |
||||||
08.04.2015, 23:25 | ||||||
Может быть проверить делимость тестируемого числа на 2,3,5, а потом делать приращение не inc(i,2) а
1
|
Модератор
10151 / 5488 / 3371
Регистрация: 17.08.2012
Сообщений: 16,779
|
|
09.04.2015, 03:01 | |
А на 5... Зачем?
Читал когда-то давно. Ну, вероятностные алгоитмы для сравнительно малых чисел неэффективны, а для больших всё равно требуют дополнительной проверки на простоту числа, на то они и вероятностные. А решёта различные служат не для проверки простоты числа, а для нахождения всех простых чисел, меньших наперёд заданного числа. И не такие уж они простые, все эти Эратосфены и Аткины, всем им требуется немножко памяти. Ну да ладно. Вернёмся к нашим баранам.
У меня там тоже 2-4, только не столь эффективное, как У Вас. Я всё думал, как произвести инкремент числа то на 2, то на 4, исходя из самого i, ничего толкового не придумал, кроме того, что числа, которые требуется исключить, делятся на 3 нацело: 5, 7, 9, 11, 13, 15, 17, 19, 21, 23... и до Вашего варианта не дошёл, хотя, про xor мысль мелькала. Однако, вопрос об эффективности алгоритма с перебором делителей: фактически, 2-4 исключает из рассмотрения каждое третье нечётное число. Ну и, что имеем с гуся на каждые три числа? 3 * mod + 3 * inc = 3 * idiv + 3 * add = 3 * 4 + 3 * 1 = 15 - если делить на каждое нечётное; 2 * mod + 2 * inc + 2 * xor = 2 * idiv + 2 * add + 2* xor = 2 * 4 + 2 * 1 + 2 * 1 = 12 - Ваш вариант. Ну что, несколько поэффективней будет... Для ABC не подходит, но у меня он всё равно не стоит и я его ненавижу. Спасибо.
1
|
Модератор
![]() ![]() |
|
09.04.2015, 21:07 | |
Да, приращение небольшое - всего 33%...
Но программа с таким алгоритмом уже интереснее и оригинальнее перебора всех чисел. Формулу для описания простых чисел я знал ещё со школы, но как ею воспользоваться увидел только вчера ![]() ![]() Спасибо!
0
|
Модератор
10151 / 5488 / 3371
Регистрация: 17.08.2012
Сообщений: 16,779
|
||||||
09.04.2015, 22:28 | ||||||
Ну и, окончательный вариант, мало ли, вдруг кому два фрагмента в один ну никак не сообразится:
0
|
Модератор
![]() ![]() ![]() |
||||||
10.04.2015, 00:10 | ||||||
![]() Решение
Cyborg Drone,
На мой вкус, чуть поправил бы. Если положить до проверки IsPrime:=False, то по нахождению делителя можно сразу выйти по Exit, а если дожили до завершения цикла -- присвоить IsPrime True:
3
|
Модератор
10151 / 5488 / 3371
Регистрация: 17.08.2012
Сообщений: 16,779
|
|
10.04.2015, 01:41 | |
Да, и на мой вкус так лучше.
0
|
10.04.2015, 01:41 | |
Помогаю со студенческими работами здесь
20
Определить, является ли заданное число простым является ли заданное натуральное число n простым Является целое число, введенное пользователем простым. Является целое число, введенное пользователем простым. Является ли введенное пользователем натуральное число простым Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
|
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
|
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations
рестрикции доступа на сервер sshd
статья:
https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
|
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
|
Многопоточное программирование в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
|
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
|
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
|
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
|
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
|
Образование и практика
Igor3D 21.03.2025
Добрый день
А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
|