|
16 / 14 / 7
Регистрация: 04.11.2011
Сообщений: 137
|
||||||
Алгоритм проверки числа на "совершенность"09.07.2013, 17:31. Показов 11493. Ответов 42
Метки нет (Все метки)
Приветствую всех!
Прошу помочь со следующей задачей: "Натуральное число называется совершенным, если оно равно сумме всех своих делителей, за исключением себя самого. Число 6 – совершенное, так как 6 = 1+2+3. Число 8 – не совершенное, так как 8 ≠ 1+2+4.Дано натуральное число n. Получить все совершенные числа, меньшие n." Задачу я решил (код ниже), но работает программа слишком медленно. Пожалуйста помогите оптимизировать код, нужно чтобы программа требовала, как можно меньше памяти и работала быстрее.
Заранее всем благодарен))
0
|
||||||
| 09.07.2013, 17:31 | |
|
Ответы с готовыми решениями:
42
Реализовать эффективный алгоритм проверки числа на простоту и подсчета количества делителей натурального числа Алгоритм проверки делимости числа на 7 |
|
|
||
| 09.07.2013, 20:04 | ||
в том алгоритме по сути не используется свойство:если a делитель n, то и n/a тоже делитель, там еще более крутые моменты (мультипликативные функции), поэтому быстро работает ![]() P.S. а то бы не выставлял бы тот алгоритм. интересно было поработать с мульт.функциями, после чего пришла идея такого алгоритма.
0
|
||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
|
|||
| 09.07.2013, 20:18 | |||
i5 нет проверить не могуно до него div достаточно дорогая операция была
0
|
|||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 09.07.2013, 20:23 | |
|
Kukurudza, я что то разве говорил об умножении? Я сравнивал с битовыми операциями.
0
|
|
|
16 / 14 / 7
Регистрация: 04.11.2011
Сообщений: 137
|
|||||||
| 10.07.2013, 09:36 [ТС] | |||||||
|
ValeryS, спасибо за замечания)) Сразу как-то и не подумал над х/2.
Чуть-чуть причесал код: Кликните здесь для просмотра всего текста
Kukurudza, благодарю за вики, появились кое какие мысли) Использование последовательности чисел Мерсенне способ весьма годный на практике, но когда речь идёт об алгоритмизации думаю не совсем уместен. Thinker, Ваш алгоритм нахождения делителей числа действительно очень быстро работает. Еще не разобрался как он работает... Вообщем по алгоритму проверки числа на совершенность пока идей больше нет, а вот как сократить количество итераций проверки самих чисел меньше заданного n (по условию) есть. Заинтересовало сл. св-во совершенных чисел в вики: "Все чётные совершенные числа в двоичной записи содержат сначала p единиц, за которыми следует p—1 нулей (следствие из их общего представления)." Таким образом можно было бы проверять все числа от 4 до n сначала на удовлетворение этому условию (операция, как я полагаю, менее затратная, если не ошибаюсь) и только проходящие по нему проверять на совершенность.
0
|
|||||||
|
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 538
|
||
| 10.07.2013, 10:02 | ||
|
http://ru.wikipedia.org/wiki/%... 0%B8%D1%8F а вообще это у вас академическая задача или какая-то практическая? решили нобеля получить поди?
0
|
||
|
2 / 2 / 1
Регистрация: 17.04.2012
Сообщений: 22
|
|
| 10.07.2013, 10:17 | |
|
если интересно разобраться с О( ) и с другими её друзьями - "Алгоритмы построения и анализ" авторы: Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн)
1
|
|
|
|
|
| 10.07.2013, 12:31 | |
|
Naudiz,
Быстрый поиск совершенных чисел
0
|
|
|
16 / 14 / 7
Регистрация: 04.11.2011
Сообщений: 137
|
||||||
| 12.07.2013, 20:50 [ТС] | ||||||
|
Thinker, благодарю, то что нужно. Можно вопрос по Вашему коду?
Эта запись в дальнейшем фигурирует в выражениях в main
0
|
||||||
| 12.07.2013, 20:57 | |
|
Самый быстрый поиск совершенных чисел. Берем гугл. Сбиваем "OEIS совершенные числа". Находим эту страницу - http://oeis.org/A000396 Копируем все числа в константы (хоть в строковые). Организуем поиск по константам. Радуемся сложности O(1)
0
|
|
|
16 / 14 / 7
Регистрация: 04.11.2011
Сообщений: 137
|
|
| 12.07.2013, 21:03 [ТС] | |
|
Thinker, не понял. В Вашем коде именно llu и он компилируется и работает))
Добавлено через 45 секунд Dani, не смешно.
0
|
|
| 12.07.2013, 21:07 | |||||||
0
|
|||||||
|
16 / 14 / 7
Регистрация: 04.11.2011
Сообщений: 137
|
|
| 12.07.2013, 21:15 [ТС] | |
|
Dani, речь идёт именно об "алгоритме проверки числа на совершенность", а не о выводе совершенных чисел на экран.
Thinker, а что происходит в 57 строке? Заранее извиняюсь, мне еще не по зубам такой код(
0
|
|
|
|
||
| 12.07.2013, 21:19 | ||
|
Dani, программа дает иллюзию, что если вдруг ОЗУ позволит хранить очень большие числа, то с ее помощью можно найти еще несколько дополнительных чисел, не вошедших в ТОП10
![]() Добавлено через 2 минуты
0
|
||
| 12.07.2013, 21:23 | |||
|
Если нужно научиться находить совершенные числа или в учебных целях - то с твоим кодом никто не конкурирует, но пусть большие числа считает, например, этот сайт http://oddperfect.org/ Да и BigInt юзать как-то неохота в связи с затратами и повышением сложности кода.
1
|
|||
| 12.07.2013, 21:23 | |
|
Быстрый алгоритм проверки числа на простоту Нужен алгоритм проверки большого числа на простоту Алгоритм выделения разрядов числа и проверки, есть ли среди них нечетная цифра Составить алгоритм проверки гипотезы Гольдбаха о представлении каждого чётного числа в виде суммы двух простых Дано четырехзначное число. Составить алгоритм выделения его разрядов и проверки, составляют ли цифры числа упорядоченную последовательность. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача
Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
Сигнатура
func Fetch(urls string, maxConcurrent int) Result
Пример
urls :=. . .
|
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition)
Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
|
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
|
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool
Worker Pool — паттерн конкурентной обработки задач в Go.
Суть: фиксированное количество горутин-воркеров читают задачи из общего канала
и пишут результаты в общий канал результатов. . . .
|
|
[golang] Pipeline
alhaos 08.06.2026
Pipeline
Pipeline — паттерн конкурентной обработки данных в Go.
Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
|
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь
lIs4oanZS9Y
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|