|
16 / 14 / 7
Регистрация: 04.11.2011
Сообщений: 137
|
||||||
Алгоритм проверки числа на "совершенность"09.07.2013, 17:31. Показов 10926. Ответов 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
|
||
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
|
|||
| 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 | |
|
Помогаю со студенческими работами здесь
40
Быстрый алгоритм проверки числа на простоту Нужен алгоритм проверки большого числа на простоту Алгоритм выделения разрядов числа и проверки, есть ли среди них нечетная цифра Составить алгоритм проверки гипотезы Гольдбаха о представлении каждого чётного числа в виде суммы двух простых Дано четырехзначное число. Составить алгоритм выделения его разрядов и проверки, составляют ли цифры числа упорядоченную последовательность. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|