Это последовательность A054261 .
- е простое число сдерживания является наименьшим числом , которое содержит первые простых чисел как подстрок. Например, число - это наименьшее число, которое содержит первые 3 простых числа в качестве подстрок, что делает его третьим основным номером содержания.
Нетрудно понять, что первые четыре простых числа локализации - это , , и , но тогда это становится более интересным. Поскольку следующее простое число равно 11, следующее простое число не , но это так как оно определено как наименьшее число со свойством.
Однако настоящая проблема возникает, когда вы выходите за пределы 11. Следующее простое число сдерживания - . Обратите внимание, что в этом номере подстроки и перекрываются. Номер также совпадает с номером .11
13
3
13
Легко доказать, что эта последовательность увеличивается, так как следующее число должно соответствовать всем критериям числа перед ним и иметь еще одну подстроку. Однако последовательность строго не увеличивается, как показывают результаты для n=10
и n=11
.
вход
Одно целое число n>0
(я полагаю, вы могли бы также проиндексировать его, а затем сделать n>=0
)
Выход
Либо n
основной номер содержания, либо список, содержащий первые n
простые номера содержания.
Числа, которые я нашел до сих пор:
1 => 2
2 => 23
3 => 235
4 => 2357
5 => 112357
6 => 113257
7 => 1131725
8 => 113171925
9 => 1131719235
10 => 113171923295
11 => 113171923295
12 => 1131719237295
Обратите внимание, что n = 10
и n = 11
это одно и то же число, так как является самым низким числом, которое содержит все числа , но также содержит .
Так как это обозначено кодом гольф, получите гольф! Разрешены грубые решения, но ваш код должен работать для любого ввода в теории (это означает, что вы не можете просто объединить первые n простых чисел). Удачного игры в гольф!
P
оператор явное отображение для проверки простых чисел в числе (вместо проверки, находится ли число в массиве простых чисел)? Это красивое решение, я сомневаюсь, что вы могли бы сделать любое решение, используя меньше команд.P
- это продукт. Это в основном умножает все значения в списке.Åp
Создаст список с первымn
количеством простых чисел, гдеn
находится входI
в данном случае.å
Будет проверять для каждого номера в этом списке простых чисел , если они находятся в текущем количестве бесконечного списка, где он даст1
для truthy и0
для falsey. Таким образом, продукт в основном проверяет, правдивы ли все; если все простые числа находятся внутри текущего числа. Если они равны 0,P
результат также будет равен фальси. Но если все так1
,P
результаты получаются правдоподобными, и.Δ
-loop останавливается.1µNIÅpåP
. Для тех, кто не знает 05AB1E, объяснение также и для меня:1µ
- пока переменная счетчика не достигнет 1 (она начинается с 0,N
постепенно увеличивается на 1 и выполните:NIÅpåP
- проверьте, все ли первые числа <input> появляются в,N
и , если это так, автоматически увеличивайте значение переменной счетчика. Возвращает окончательное значение N.X
а не по1
причинам), но я переключился на это, поскольку раньше у меня никогда не было возможности использовать∞
:)Желе , 11 байт
Попробуйте онлайн!
Простая грубая сила. Не совсем уверен, как
#
работает Arity, поэтому может быть что-то для улучшения.Как это устроено
источник
wⱮẠ¥1#ÆN€
сохраняет два байта.Java 8, 143 байта
Попробуйте онлайн.
ЗАМЕТКИ:
n=7
.n=9
за ограничения размераint
(максимум2,147,483,647
).int
along
, максимум увеличивается до выхода ниже9,223,372,036,854,775,807
(о чемn=20
я думаю?)java.math.BigInteger
максимума можно увеличить его до любого размера (теоретически), но он будет составлять около +200 байт, по крайней мере, из-за многословности российскихjava.math.BigInteger
методов.Объяснение:
источник
JavaScript (ES6),
105 ... 9291 байтПопробуйте онлайн!
Как?
комментарии
источник
Рубин , 58 байт
Попробуйте онлайн!
Брутфорс, работает до 7 на ТИО.
источник
Pyth , 14 байт
Попробуйте онлайн!
Pyth , 15 байт
Чуть быстрее, но на 1 байт длиннее.
Попробуйте онлайн!
источник
Желе , 14 байт
Попробуйте онлайн!
источник
Древесный уголь , 42 байта
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Создайте первые
n
простые числа путем пробного деления всех целых чисел на все ранее найденные простые числа.Переберите все целые числа, пока не найдете одно, которое содержит все простые числа в качестве подстрок.
Приведите результат к строке и неявно напечатайте.
Скорость программы можно удвоить за счет байта, заменив последний
≦⊕η
на,≦⁺²η
но он все еще слишком медленный для вычисленияn>6
.источник
Perl 6 ,
6359 байт-4 байта благодаря nwellnhof
Попробуйте онлайн!
Решения с использованием грубой силы для TIO превышают 5, но я уверен, что они работают правильно. Находит первое положительное число, которое содержит первые
n
простые числа. Вот решение , для которого не время ожиданияn=6
.Объяснение:
источник
Python 2 , 131 байт
Попробуйте онлайн!
f
это функция.источник
Python 2 , 91 байт
Попробуйте онлайн!
источник
SAS, 149 байт
Ввод вводится после
cards;
оператора, например, так:Выводит набор данных
p
, с результатомv
, с выходной строкой для каждого входного значения. Технически должно работать для всех приведенных тестовых случаев (максимальное целое число с полной точностью в SAS составляет 9 007 199 254 740 992), но я сдался, позволив ему подумать в течение 5 минут при n = 8.Объяснение:
источник
Haskell , 102 байта
Попробуйте онлайн!
Объяснение / Ungolfed
Поскольку мы уже
Data.List
импортировали, мы могли бы также использовать его: вместо старого доброгоtake n[p|p<-[2..],all((>0).mod p)[2..p-1]]
мы можем использовать другой способ генерации всех необходимых нам простых чисел. А именно, мы генерируем достаточное количество композитов и используем их вместе с(\\)
:n*n
источник
Japt,
2018 байтДалеко от моей лучшей работы, я был просто счастлив заставить ее работать после того дня, который у меня был. Я уверен, что в итоге постучу по нему вниз по пуху!
Попробуйте - для запуска требуется 13 секунд,
7
после этого выдает колебание (обновленная версия выдает5
меня, но это может быть только мой телефон).источник
F.h()
самостоятельно, и он, похоже, не работает; ETH должно быть что-то изменило.