Описание задачи
Число Смит является композитом числа, сумма цифр равна сумме сумм цифр его простых множителей. Учитывая целое число N
, определите, является ли это число Смита или нет.
Первые несколько номеров Смита являются 4
, 22
, 27
, 58
, 85
, 94
, 121
, 166
, 202
, 265
, 274
, 319
, 346
, 355
, 378
, 382
, 391
, 438
(последовательность A006753 в OEIS).
Пример ввода / вывода
18: False (sum of digits: 1 + 8 = 9; factors: 2, 3, 3; sum of digits of factors: 2 + 3 + 3 = 8)
22: True
13: False (meets the digit requirement, but is prime)
666: True (sum of digits: 6 + 6 + 6 = 18; factors: 2, 3, 3, 37; sum of digits of factors: 2 + 3 + 3 + 3 + 7 = 18)
-265: False (negative numbers can't be composite)
0: False (not composite)
1: False (not composite)
4937775: True
Заметки
- Ваш код может быть функцией (методом) или полноценной рабочей программой,
- Вместо таких слов, как
True
иFalse
, вы можете использовать любые истинные и ложные значения, если ясно, что они есть, - Это задача для игры в гольф , поэтому сделайте ваш код как можно короче!
Ответы:
Желе ,
1211 байтВозвращает 1 для чисел Смита и 0 в противном случае. Попробуйте онлайн! или проверьте все контрольные примеры .
Задний план
Æf
(простая факторизация) иD
(целое-десятичное) реализованы так, чтоP
(произведение) иḌ
(десятичное-целое) составляют левые инверсии.Для целых чисел -4 до 4 ,
Æf
возвращает следующее.Для чисел -10, -1, -0.5, 0, 0,5, 1, 10 ,
D
возвращает следующее.Как это работает
источник
Python 2,
122115110106 байтСохранено 4 байта благодаря Денису
Попробуйте это на ideone.com
объяснение
Считывает число в stdin и выводит, является
True
ли число Смитом илиFalse
нет.источник
print n<m>s==sum(map(int,`m`))
.Брахилог , 19 байт
Попробуйте онлайн!
объяснение
источник
_
(так называемый низкий минус ).05AB1E ,
1117 байтобъяснение
Попробуйте онлайн!
источник
PowerShell v3 +, 183 байта
Нет встроенной первичной проверки. Нет встроенного факторинга. Нет встроенной цифры-суммы. Все сделано вручную. : D
Принимает ввод
$n
как целое число, устанавливает$b
равным пустому массиву. Вот$b
наша коллекция основных факторов.Далее идет
for
цикл. Сначала мы устанавливаем$a
равным нашему входному номеру, а условным является до тех пор, пока$a
он меньше или равен 1. Этот цикл будет искать наши основные факторы.Цикл от
2
до$a
, используетWhere-Object
(|?{...}
) для извлечения простых чисел , которые также являются факторами!($a%$_)
. Они вводятся во внутренний цикл,|%{...}
который помещает фактор в$b
делитель и делит его$a
(таким образом, мы в конечном итоге доберемся до1
).Итак, теперь у нас есть все наши главные факторы
$b
. Время сформулировать наш логический результат. Нам нужно убедиться, что$n
это так-notin
$b
, потому что, если это так, это означает, что$n
это простое число, и это не число Смита. Кроме того, (-and
) нам нужно убедиться, что наши два набора цифр являются-eq
действительными. Полученное логическое значение остается в конвейере, а вывод неявным.NB - Требуется v3 или новее для
-notin
оператора.Я все еще использую ввод дляЧерез 3+ часа я получил ошибку переполнения стека. Итак, где-то есть верхняя граница. Ну что ж.4937775
(это медленно для вычисления), поэтому я обновлю это, когда это закончится.Это будет работать для отрицательного ввода, нуля или единицы, потому что правая часть функции
-and
будет отображать ошибку, пока она пытается вычислить суммы цифр (показано ниже), что приведет к тому, что эта половина перейдет$false
при оценке. Поскольку STDERR по умолчанию игнорируется , и правильный вывод по-прежнему отображается, это нормально.Контрольные примеры
источник
MATL, 17 байт
Выводит правдивые или ложные массивы, где для правдивого вывода требуется, чтобы все элементы были ненулевыми.
Попробуйте онлайн
источник
Желе ,
27 2523 байта(дальнейшая игра в гольф,
вероятно,определенно возможна)Возвращает
0
за ложь или1
за истинуВсе тестовые случаи в TryItOnline
Как?
источник
На самом деле, 18 байт
К сожалению, на самом деле нет встроенной факторизации, которая дает множителям число главных факторов, поэтому мне пришлось взломать их вместе. Предложения по игре в гольф приветствуются. Попробуйте онлайн!
Ungolfing
источник
Haskell,
120105 байтовисточник
Октава,
8078 байтОбъяснение:
Попробуйте онлайн .
источник
any(t<0)
для не-первичности очень умноPyth, 21 байт
Программа, которая принимает ввод целого числа и печатает
True
илиFalse
как релевантный.Попробуйте онлайн
Как это работает
источник
Perl 6 ,
928887 байтАнонимная функция, которая возвращает Bool.
( попробуйте онлайн )
РЕДАКТИРОВАТЬ: -1 байт благодаря b2gills
источник
2..i-1
лучше пишется как2..^i
.Java 7,
509506435426419230 байтЯ должен был выслушать комментарий @BasicallyAlanTuring ..
Ах, хорошо .. Некоторые языки программирования используют один байт для простых факторов или простых проверок, но Java, безусловно, не является одним из них.
РЕДАКТИРОВАТЬ: вдвое количество байтов теперь, когда у меня было время подумать об этом.
Ungolfed (сортировка ..) и контрольные примеры:
Попробуй это здесь.
Выход:
источник
Brachylog (новее) , 11 байт
Попробуйте онлайн!
Предикат завершается успешно, если ввод представляет собой число Смита, и завершается ошибкой, если это не так.
источник
Japt ,
1411 байт-3 байта благодаря @Shaggy
Попробуйте онлайн!
источник
JavaScript (ES6),
87 8684 байтаПопробуйте онлайн!
источник
Пайк, 16 байт
Попробуй это здесь!
источник
2
Perl 6 , 80 байт
Попробуйте онлайн!
Блок анонимного кода, который принимает целое число и возвращает логическое значение.
источник
APL (Dyalog Extended) ,
3629 байт SBCSЭтот ответ обязан своей игривости монаде Расширенного
⍭
за возврат основных множителей числа, и это⊤
лучше при конвертации базы, чем в Dyalog Unicode.Редактировать: -7 байт благодаря dzaima.
Попробуйте онлайн!
объяснение
источник
{2>⍵:0⋄(⊃=+/-⊃×2<≢)+⌿10⊤⍵,⍭⍵}
J ,
3130 байтПопробуйте онлайн!
источник
C (gcc) ,
139136 байтПопробуйте онлайн!
-3 байта благодаря потолку
Объяснение:
источник
t-h&&i==_
вместоt-h?i==_:0
Ракетка 176 байт
Возвращает 1, если истина, и 0, если ложь:
Подробная версия:
источник
Ржавчина - 143 байта
заимствованное решение Python @levitatinglion ... по крайней мере, это короче, чем Java ...
дегольфед на play.rust-lang.org
источник
APL (NARS), 33 символа, 66 байтов
«π⍵» возвращает список факторов factors, предположим, что входное значение - одно положительное целое число> = 1; тест:
источник
C (gcc), 177 байт
Определяет функцию,
Q
которая возвращает 0 для чисел кузнеца и ненулевое значение для чисел не кузнецаПопробуйте онлайн!
Объяснение:
источник
C # (интерактивный компилятор Visual C #) , 122 байта
Попробуйте онлайн!
источник