В избытке число является целым числом п , который устанавливает новую верхнюю границу для ее соотношение с функцией делителем суммы а. Другими словами, n является сверхизбыточным тогда и только тогда, когда для всех натуральных чисел x меньше n :
Для нескольких значений:
n σ(n) σ(n)/n superabundant
1 1 1.0000 yes
2 3 1.5000 yes
3 4 1.3333 no
4 7 1.7500 yes
5 6 1.2000 no
6 12 2.0000 yes
7 8 1.1429 no
8 15 1.8750 no
9 13 1.4444 no
Более длинный список (для тестовых случаев) можно найти по адресу OEIS A004394 .
Один настоятельно рекомендуемый негативный тестовый случай (если ваш переводчик может его обработать) - 360360, потому что он связан с последним избыточным числом.
Вызов
Ваша программа должна принимать одно положительное целое число и выводить истинное или ложное значение, показывающее, является ли это целое число избыточным.
Поскольку это код-гольф , выигрывает самый короткий ответ в байтах.
Æs÷$ÐṀ=
для 7 байтов. Я не осознавалÐṀ
, что это полезно, это полезно знать.360360
. Фактически это была моя первоначальная версия360360
?360360
- это первое число, для которого он потерпит неудачу (я думаю), потому что это первое число, связывающее результат, который произошел ранее. (и наш результат будет[0, 1]
)Haskell , 73 байта
-1 байт благодаря мистеру Xcoder. -7 байт благодаря Лайкони.
Попробуйте онлайн!
Система типов Хаскелла не очень хорошая ...
источник
Haskell ,
646361 байт-1 байт благодаря мистеру Xcoder .
-2 байта благодаря Линн .
Попробуйте онлайн!
источник
Октава , 41 байт
Попробуйте онлайн!
объяснение
источник
J 35 байт
Спасибо Mr.Xcoder за обнаружение проблемы и помощь для ее устранения!
Попробуйте онлайн!
источник
360360
(см. Проблему для более подробной информации: один настоятельно рекомендуемый отрицательный контрольный пример - 360360, потому что он связан с последним избыточным числом. ).#.~
много (честно, целая функция суммы делителя действительно хороша). Что было не так между прочим, так это то, что, хотя мысль о действии{:=>./
умна, она не удовлетворяет «большей, чем» части вопроса.(1#.{:(]*0=|~)])\
. Что-то не так с этим, хотя, может быть, у вас есть какие-то мысли?(1#.]*0=|~)1+i.
это крюк, и он не так легко укладывается на место :)Юлия 0.6 , 52 байта
Попробуйте онлайн!
Это решение использует рациональные числа для обеспечения корректности в случае равенства. (Тестирование 360360 заняло почти 10 минут.)
Используя плавающую точку, можно сохранить 2 байта с разделением влево:
источник
Pyth , 14 байт
( FryAmTheEggman сохранил 1 байт)
Попробуй это здесь! или увидеть больше тестов.
Просто мое обязательное представление Pyth, которое, скорее всего, пригодно для игры в гольф.
Как?
источник
05AB1E , 10 байтов
Попробуйте онлайн! или как тестовый набор
объяснение
источник
360360
(см. Проблему для более подробной информации: один настоятельно рекомендуемый негативный тестовый случай - 360360, потому что он связан с последним избыточным числом. ).Python 3 , 77 байт
-1 байт благодаря Роду. -3 байта благодаря Денису.
Попробуйте онлайн!
источник
R используя
numbers
, 59 байтисточник
Mathematica,
5350 байтЧистая функция. Принимает целое число в качестве входных данных и возвращает
True
или вFalse
качестве выходных данных.источник
Tr@Divisors@#
работает?Japt v2.0a0,
1216 байтМозг, лишенный сна, не может улучшить это дальше!
Возвращается
1
за правду или0
за фальси.Попытайся
Пожертвовал 4 байта для обработки
360360
.объяснение
U
.Æ Ã
создает массив целых чисел от0
доU-1
и передает каждый через следующую функцию какX
.â
получает делителейU
.÷U
делит каждого из них наU
.x
подводит итогиXâ
получает делителейX
.÷X
делит каждого из них наX
.x
подводит итоги>
проверяет, больше ли первый результат, чем второй.×
уменьшает результирующий массив логических значений путем умножения.источник
360360
других целых чисел: один крайне рекомендуемый отрицательный тестовый случай (если ваш интерпретатор может его обработать) равен 360360, поскольку он связан с последним избыточным числомAPL + WIN, 37 байт
Подсказки для ввода с экрана.
источник
C (gcc), 99 байтов
Попробуйте онлайн!
C 108 байтов
Попробуйте онлайн!
источник
s
нужно вернуть поплавок?s(n)/n
сs(i)/i
.Swift ,
120118 байтЗанимает некоторое время (около 6 секунд на TIO) для компиляции из-за неявных объявлений типов в Swift.
Попробуйте онлайн!
источник
Желе , 12 байт
Попробуйте онлайн! или Найти все сверхизбыточные числа ниже 1000.
потому что я ненавижу плавающие точки.
источник
Фанки , 79 байт
Разъяснения
Это сначала определяет функцию,
d
которая являетсяσ
функцией, и это версия гольфаМы можем установить I в 0, потому
i*n%0
что всегда будет равным0*...
, таким образом0
.Следующая половина этого определяет функцию
f
, которая является функцией Superabandunce, и это просто игра в гольфИ это просто проверяет, как предполагает спецификация задачи, что все целые числа от 1 до n-1 имеют значение
d(n)/n
меньше, чем входное.Попробуйте онлайн!
источник
APL (Dyalog) , 33 байта
Попробуйте онлайн!
источник
Шелуха , 9 байт
Попробуйте онлайн! Слишком медленно для теста 360360.
объяснение
источник
£ü¤<§ṁ/ḊN
. Создание всего списка излишних чиселPerl 5, 84 байта
требует
-E
(бесплатно)прямая реализация спецификации, игра в гольф
источник
APL (NARS), 61 символ, 122 байта
11π - функция сумма факторов
источник