Учитывая большое число (в базе 10), например, 1234567891011121314151617, найдите в нем простые «субномера».
Простое «субномер» - это последовательная последовательность цифр (взятая из ввода), которая представляет простое число (в базе 10).
- Ввод : число (строка, файл или что угодно).
- Вывод : все простые субнамеры разделены каким-либо образом (либо в списке, либо в файле, либо через строки, разделенные запятыми ...). Если результат пустой, вы можете принять любое соглашение, которое вам нравится (жестко закодированная строка, пустая строка, бред, но программа не должна врезаться.
- Пример
1234 -> 2, 3, 23
6542 -> 5, 2
14 -> [.. пустой вывод]
Это код-гольф. Самая короткая программа выигрывает!
[править]: дополнительное правило, программа должна быть объяснена! Не все свободно говорят на желе :)
Ответы:
05AB1E (legacy) , 3 байта
Попробуйте онлайн!
Подстроки ввода, которые являются простыми.
источник
Perl 6 , 28 байт
Попробуйте онлайн!
:ex
( «Исчерпывающий») флаг оператора матчаm
делает вернуть все возможное совпадение.+
(то есть, каждый подстроки одного или более символов), даже перекрытие из них. Гипероператор+«
превращает этот списокMatch
объектов в числа, которые затем фильтруются по простотеgrep &is-prime
.источник
{+«m:ex/(.+)<?{$0.is-prime}>/}
Брахилог , 4 байта
-1 байт благодаря Kroppeb .
Попробуйте онлайн!
ᶠ
s
Ind все Ubstrings,ˢ
выбратьṗ
интимисточник
sᶠṗˢ
на один байт короче. Он находит все подстроки и возвращает те, которые являются простыми. Смотрите здесь codegolf.stackexchange.com/a/117871/81957Python 2 ,
6665 байтПопробуйте онлайн!
источник
while k<=n
или, чтобы стоить 0 байтов,while~n+k
while
заявления? Я не видел этот тип кодов раньше. Также не видел использования `` , что он делает?while stmt:
будет работать до тех пор, покаstmt
имеет значение, которое Python считает правдивым. Единственное ложное целое число в Python это0
. Поэтому код будет работать как~n+k != 0
.~
является побитовым оператором дополнения и~n
эквивалентен-n - 1
.~n + k != 0
<=>-n - 1 + k != 0
<=>k != n + 1
. Поскольку мы увеличиваем значениеk
на1
в каждой операции,k != n + 1
в этом случае эквивалентноk <= n
.`n`
такой же, какrepr(n)
в Python 2. (не работает в Python 3).Japt ,
1310 байтСпасибо @Shaggy -3 байта
Попробуйте онлайн!
источник
Желе ,
54 байта-1 спасибо Кевину Круйссену (
Ẓ
это псевдонимÆP
)Монадическая ссылка, принимающая список цифр *, который выдает список простых целых чисел.
* переходя к «либо строке, файлу, либо как вам угодно» - чтобы взять целое число, добавьте к коду префикс
D
Попробуйте онлайн!
Как?
источник
ÆP
может бытьẒ
если я не ошибаюсь?Java 8,
148147 байтПопробуйте онлайн.
Объяснение:
источник
MATL , 9 байт
Попробуйте онлайн!
объяснение
источник
Bash + GNU Core Утилиты:
8077 байтЭто не может быть самым коротким, но у меня проблемы с придумыванием чего-то лучшего. Требуется помощь!
Придерживаясь только POSIX, я получил 82:
источник
R , 60 байтов
Попробуйте онлайн!
Не очень эффективный, вдохновленный ответом @ovs python 2
источник
Python 2 ,
115114 байтПопробуйте онлайн!
источник
if~-n*all(n%i for i in range(2,n))
сохраняет 4.Шелуха , 5 байт
Попробуйте онлайн!
источник
Чисто , 108 байт
Попробуйте онлайн!
источник
Pyth, 8 байт
Тестирование
Принимает входные данные в виде строки, выводит список целых чисел. Может также принимать входные данные
Объяснение:int
, добавляя`
в конце дополнительный байт.И
`
просто преобразуетсяint
вstr
.источник
Wolfram Language (Mathematica) , 40 байт
Попробуйте онлайн!
Вход и выход представляют собой списки цифр. В случае отсутствия простых чисел
{}
возвращается пустой список .Использует
@*
дляComposition
функций.Subsequences
дает список всех подпоследовательностей входных данных иSelect[PrimeQ@*FromDigits]
является операторной формой,Select
которая возвращает список всех элементов, для которыхPrimeQ@*FromDigits
возвращаетсяTrue
.источник
Matlab, 89 байт
Попробуйте онлайн!
источник