Этот вопрос станет поворотом при поиске n
простого числа.
Вызов
Вы должны написать программу, которая будет принимать один вход n
и выводить n
простое число, десятичное представление которого содержит десятичное представление n
в виде подстроки.
Смущенный? Вот несколько примеров.
n=1
Primes: 2, 3, 5, 7, 11
^1 first prime that contains a 1
Output: 11
n=2
Primes: 2, 3, 5, 7, 11, 13, 17, 19, 23
^1 ^2 second prime that contains a 2
Output: 23
n=3
Primes: 2, 3, 5, 7, 11, 13, 17, 19, 23
^1 ^2 ^3 third prime that contains a 3
Output: 23
n=10
Primes: 2, 3, 5, 7, 11, ..., 97, 101, 103, 107, 109, ..., 997, 1009, 1013, 1019, 1021, 1031, 1033
^1 ^2 ^3 ^4 ^5 ^6 ^7 ^8 ^9 ^10 tenth prime that contains a 10
Output: 1033
Это код-гольф , поэтому выигрывает меньшее количество байтов.
Если что-то сбивает с толку, пожалуйста, оставьте комментарий.
Hot Network Questions
списке.Ответы:
05AB1E , 8 байтов
Код:
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн! ,
источник
Pyth - 11 байт
Тестовый пакет .
источник
Python 2,
676562 байтаПроверьте это на Ideone .
Как это работает
Мы используем следствие теоремы Вильсона :
Всегда переменная p равна квадрату факториала m - 1 .
Если k <n , то
k/n
будет 0 и f вызывается рекурсивно. m увеличивается, p обновляется, а k увеличивается тогда и только тогда, когда m является простым числом, содержащим n .Последнее достигается путем добавления результата
p%m*(`n`in`m`)
к k . По следствию из теоремы Вильсона, если m простое,p%m
возвращает 1 , а если нет, то возвращает 0 .Как только k достигает n , мы нашли q , n- е простое число, которое содержит n .
Мы находимся в следующем звонке во время проверки, поэтому m = q + 1 .
k/n
вернет 1 , и побитовые операторы-~
будут увеличивать это число один раз для каждого вызова функции. Так как для увеличения m от 2 до q + 1 требуется q - 1 вызовов f , самый внешний вызов f вернет 1 + q - 1 = q , как и предполагалось.источник
Баш, 27 байт
primes
происходит от bsdgames.Принимает ввод в качестве аргумента командной строки и выводит на STDOUT.
источник
Желе , 13 байт
Попробуйте онлайн!
источник
Mathematica, 75 байтов
Может все еще быть пригодным для игры в гольф.
источник
Ява,
194180173171112 байтКод:
Ungolfed:
источник
P {
иString[] s
. И 2. вы в настоящее время только даете вывод для10
, но задача кода-гольфа заключалась в том, чтобы взять входn
и дать правильный вывод на основе этого ввода. Кроме того, вы можете найти это интересным: Советы по игре в гольф на Яве.Рубин,
6261 байтТребуется
-rprime
флаг (+8 байт).источник
Юлия,
6160 байтПопробуйте онлайн!
источник
MATL , 18 байт
Попробуйте онлайн!
объяснение
Это генерирует простые числа в порядке, используя
do...while
цикл. Для каждого простого числа проверяется условие (и простое число расходуется). Если выполнено, то простое число снова помещается в стек. Количество элементов в стеке используется для подсчета количества найденных нами подходящих простых чисел. Когда их достаточно, отображается последний.источник
Пайк, 15 байт
Попробуй это здесь!
источник
Bash + GNU coreutils, 66 байт
В отличие от решения @ Doorknob, для этого нужны только те вещи, которые установлены на каждом GNU / Linux:
источник
seq 1e20|factor|grep -Po "(?<=: )\d*$2\d$"|sed $1q\;d
for((...)){
должен быть пробел или перевод строки, поэтому это не имеет значения. Перед закрытием}
должен быть;
символ новой или новой строки, поэтому это тоже не имеет значения.Perl 6 , 41 байт
Объяснение:
Тест:
источник
Java 8,
192183181171 байт (полная программа)Попробуйте онлайн.
Объяснение:
Java 8, 105 байт (лямбда-функция)
Попробуйте онлайн.
То же, что и выше, но с
n
целочисленным вводом и без подробного материала класса.источник
&&
с&
и удалить?
из вашего регулярного выражения.&&
и&
по какой-то причине ..Clojure, 118 байт
Просто получает n-й элемент ленивой бесконечной последовательности чисел, которые являются простыми и имеют
n
в своем строковом представлении.Вы можете попробовать это здесь: https://ideone.com/ioBJjt
источник
На самом деле, 16 байтов
Попробуйте онлайн!
Объяснение:
источник
PowerShell v2 +,
10899 байтOoof. Отсутствие каких-либо встроенных простых вычислений / проверок действительно вредит здесь.
Принимает ввод
$n
, входит в бесконечныйfor()
цикл. На каждой итерации мы используемfor
цикл, обернутый вокруг основной проверки регулярных выражений PowerShell (h / t для Мартина), чтобы превратить его в простой генератор путем увеличения$i
каждый раз цикл. (Например, запуск толькоfor(){for(;'1'*++$i-match'^(?!(..+)\1+$)..'){$i}}
выдаст2, 3, 5, 7...
разделенный новыми строками).Затем просто
-like
проверьте, есть ли$n
где-нибудь$i
, и увеличьте наш счетчик$o
. Если мы достигли, где$n
и$o
равны, выведите$i
иexit
. В противном случае мы продолжаем черезfor
поиск следующего простого числа, и процесс повторяется.источник
APL (NARS), 39 символов, 78 байтов
1π - следующее простое число ...; тест:
но это уже в 20 выходит из стека ... Вместо этого это выглядит хорошо, даже если длина немного длиннее (61 символ)
источник
Добавить ++ , 36 байт
Попробуйте онлайн!
Довольно неэффективно. Итерирует по каждому целому числуя такой, что я ≤ 25 х2 и отфильтровывает композиты и простые числа, которые не содержат N , Наконец, мы беремN th значение оставшихся целых чисел.
источник
Japt
-h
,151311 байтПопытайся
источник