|
2 / 2 / 0
Регистрация: 09.02.2018
Сообщений: 140
|
|
Найти все пары натуральных дружественных чисел, меньших 50000.21.09.2018, 12:13. Показов 7308. Ответов 9
Метки нет (Все метки)
Два натуральных числа называются дружественными, если каждое из них равно сумме всех делителей другого (само другое число в качестве делителя не рассматривается). Найти все пары натуральных дружественных чисел, меньших 50000.
0
|
|
| 21.09.2018, 12:13 | |
|
Ответы с готовыми решениями:
9
Напечатать все пары "дружественных" чисел, которые не превосходят заданное натуральное число Найти все пары натуральных дружественных чисел, меньших 50000 Найти все пары натуральных дружественных чисел, меньших 50000 |
|
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
|
|
| 21.09.2018, 15:10 | |
|
В чем именно затруднение? Если в алгоритме, то есть специальный раздел форума по алгоритмам.
0
|
|
|
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
|
||||||
| 22.09.2018, 15:40 | ||||||
0
|
||||||
|
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
|
||||||
| 23.09.2018, 00:06 | ||||||
|
klopp, Во-первых у вас судя по всему в делители включена единица, что наверное все-таки неверно, хотя я не уверен, во вторых ваш перебор в лоб даже на скромных 50000 работает 10 секунд, на 100000 система может просто лечь.
Добавлено через 4 часа 24 минуты Оптимизированный по скорости вариант, 50000 находит моментально, за приемлемое время(10 секунд) находит пары для 10 миллионов.
1
|
||||||
|
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
|
|||||||
| 23.09.2018, 12:36 | |||||||
|
Ваш код очень быстрый, но результаты неверные, вы их проверяли? Ваши: 0: (2) [75, 48] 1: (2) [1925, 1050] 2: (2) [195, 140] 3: (2) [2024, 2295] 4: (2) [20735, 9504] 5: (2) [16587, 8892] 6: (2) [1648, 1575] 7: (2) [6128, 5775] Должно быть: 0: (2) [220, 284] 1: (2) [1184, 1210] 2: (2) [2620, 2924] 3: (2) [5020, 5564] 4: (2) [6232, 6368] 5: (2) [10744, 10856] 6: (2) [12285, 14595] 7: (2) [17296, 18416] М.б. это из-за той самой единицы. Чуть медленнее вашего(210ms vs 178ms):
0
|
|||||||
|
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
|
||||||||||||
| 23.09.2018, 15:03 | ||||||||||||
Сообщение было отмечено sisi11 как решение
Решение
klopp, Да, это из-за единицы, сделал опционально, по умолчанию включая единицу
Единственная проблема была, что строчка for(k in numbers) , которая для каждого просто числа перебирает рассчитанные ранее числа, при большом количестве элементов работает очень долго, даже если после первой итерации будет break, на десятках тысяч записей инициализация итерируемого массива занимает несколько миллисекунд, поэтому пришлось добавить код, создающий уменьшенную копию основного хэша чисел, где будет сначала 500 элементов, и который будет постепенно уменьшаться, так как понятно что при max = 50000 простые числа больше 100 могут быть умножены только на числа меньшие 500. Фактически весь этот алгоритм - наверное почти что образец поиска делителей для большого диапазона чисел, непосредственно к задаче относится только строчка
2
|
||||||||||||
|
║XLR8║
|
||||||||||||||||||||||||||
| 25.09.2018, 04:42 | ||||||||||||||||||||||||||
|
sisi11, klopp, renat_dmitriev, дорогие братья и сёстры, обратите внимание на качество написанного вами кода. Все мы знаем что оптимизация - дело хорошее, но дело вот в чём: оптимизировать можно вечность, ибо нету ничего совершенного помимо идеи. Только идея о вещи может быть совершенной, но никак не сама вещь.
Заканчиваю философствовать. Есть $ node --version v9.11.1 на нём будем тестировать код на скорость следующим образом run.js
test и поместим их в файлы klopp.js и renat.js соответственно. klopp.js Кликните здесь для просмотра всего текста
renat.js Кликните здесь для просмотра всего текста
Да, ещё добавим свою поделку, пусть это будет tftm.js Кликните здесь для просмотра всего текста
И запустим уже наше тестирование скорости: Кликните здесь для просмотра всего текста
И тут вы можете сказать мол "Да у Рената скорость в 2.5 раза выше, зачем ты вообще код писал?" Отвечать я на этот вопрос не собираюсь, просто попрошу вас разобраться и понять как работают все 3 тестируемые функции из файлов приведённых выше. Советую начинать с лёгкого и переходить к более сложному, для этого вот небольшая подсказка в виде размера файлов в байтах: $ ls -lh klopp.js renat.js tftm.js <useless> 789 <useless> klopp.js <useless> 2223 <useless> renat.js <useless> 411 <useless> tftm.js Можете для себя сделать оценку, на сколько сложно для вас было понять как и почему работает тот или иной способ решения.
1
|
||||||||||||||||||||||||||
|
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
|
|
| 25.09.2018, 11:07 | |
|
outoftime, Если мы ограничиваемся 50000, то вы абсолютно правы. Разница в 100 миллисекунд абсолютно несущественна и простота кода приоритетна. Но как я описывал выше, подобный подход перебора чисел и нахождения их множителей дает геометрическую прогрессию при увеличении числа. Мой же алгоритм перемножения простых чисел дает арифметическую прогрессию, поскольку для нахождения суммы множителей для чисел 100 и 1000000 делается одинаковое количество операций. Поэтому как гласит народная мудрость нет смысла сравнивать ж-пу с пальцем, ж-пу надо сравнивать с ж-пой, а палец с пальцем.
0
|
|
|
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
|
|
| 25.09.2018, 22:53 | |
|
outoftime,
Не по теме: Дайте пожалуйста ссылку на мой комментарий, где я просил вас читать мне лекции и нотации. Если такого комментария не существует, то давайте пожалуйста будет чуть более уважительны друг к другу и избавим форум от бессмысленного флуда.
0
|
|
| 25.09.2018, 22:53 | |
|
Помогаю со студенческими работами здесь
10
Найти все пары натуральных дружественных чисел, меньших 10000
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|