Модератор
Эксперт функциональных языков программированияЭксперт Python
36369 / 19818 / 4152
Регистрация: 12.02.2012
Сообщений: 32,947
Записей в блоге: 13
1

Найти число из диапазона 1.1000, у которого сумма делителей максимальна

23.06.2017, 21:19. Показов 1125. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача из раздела "C для начинающих".

Вот мое решение (довольно громоздкое):

Haskell
1
2
3
4
5
task n = search z 0 0 0
         where search [] _ p _ = p+1
               search (s:ss) k p m | (s>m) = search ss (k+1) k s
                                   | otherwise = search ss (k+1) p m                
               z=map (\ x -> foldl (\ acc y -> if (x `mod` y)==0 then acc+y else acc) 0 [2..x `div` 2]) [1..n]
2
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2017, 21:19
Ответы с готовыми решениями:

Найти среди чисел то, которое имеет максимальное количество делителей и то, у которого сумма делителей максимальна
Найти среди чисел от 1 до 1000 то , которое имеет максимальное количество делителей и то , у...

Найти натуральное число из промежутка от 120 до 250 у которого количество делителей максимальна
Найти натуральное число из промежутка от 120 до 250 у которого количество делителей максимальна....

Найти первое натуральное число, сумма делителей которого больше S
Найти первое натуральное число, сумма делителей которого больше S.

Найти число, сумма делителей которого в три раза больше самого числа
Найти число, сумма делителей которого в три раза больше самого числа (Само число к делителям не...

1
Антикодер
1799 / 864 / 48
Регистрация: 15.09.2012
Сообщений: 3,079
24.06.2017, 13:13 2
Соберу здесь ссылки на всякий случай:

Haskell
1
maxSumDiv n = foldl1 max [(y, x) | x <- [1..n], y <- [sum [t | t <- [1..x], mod x t == 0]]]
Сумма находится в fst, ответ в snd.

Немного потестировал на ideone, при n = 10000:
Код на C: Найти число с максимальной суммой делителей
Оптимизированный код С - time: 0 memory: 9432
Медленный код C - time: 0.43 memory: 16256
Код на C: Найти натуральное число от 1 до 10000 с максимальной суммой делителей
time: 0.06 memory: 10320
Код Catstail - time: 0.88 memory: 8388607
Моё решение - time: 1.56 memory: 8388607

При n = 100000, уложился в limit(видимо он составляет 5 сек) только оптимизированный код на C, который показал время 0.03.
3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.06.2017, 13:13
Помогаю со студенческими работами здесь

Найти номер столбца, сумма элементов которого максимальна
Найти номер столбца сумма элементов которая максимальна.

Найти в массиве подмассив 3 х 3, сумма элементов которого максимальна
Всем Доброго времени суток, у меня возникла проблема с лабораторной работой, помогите пожалуйста,...

Найти номер столбца, сумма чисел которого максимальна
двухмерный массив NxM состоит из целых чисел. Вывести на экран номер столбца сумма чисел которого...

Дана строка целых чисел. Составить программу, которая найдет число, сумма цифр которого максимальна
2. Дана строка целых чисел. Составить программу, которая найдет число, сумма цифр которого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru