|
2 / 2 / 0
Регистрация: 09.02.2018
Сообщений: 140
|
|
Найти все пары натуральных дружественных чисел, меньших 50000.21.09.2018, 12:13. Показов 7304. Ответов 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|