Последовательность
Все знают , что только даже простое число 2
. Ho-гул. Но есть определенные четные числа, n
где при объединении n-1
они становятся простым числом.
Для начала, 1
не в списке, потому что 10
не является основным. Аналогично с 2
( 21
) и 3
( 32
). Тем не менее, 4
работает, потому что 43
это простое число, так что это первое число в последовательности a(1) = 4
. Следующее число, которое работает (ни 6
( 65
), ни 8
( 87
) не работает 10
, это потому, что 109
это простое число a(2) = 10
. Тогда мы пропускаем кучу больше, пока 22
, потому что 2221
простое, так a(3) = 22
. И так далее.
Очевидно, что все члены в этой последовательности являются четными, потому что любое нечетное число n
при объединении n-1
становится четным (как 3
превращается в 32
), которое никогда не будет простым.
Это последовательность A054211 в OEIS.
Соревнование
Если задан входной номер, n
который вписывается где-то в эту последовательность (т. n
Е. Соединен с n-1
простым), выведите его положение в этой последовательности. Вы можете выбрать 0- или 1-индексированный, но, пожалуйста, укажите, какой в вашем представлении.
правила
- Можно предположить, что ввод и вывод соответствуют целочисленному типу вашего языка.
- Ввод и вывод может быть дан в любом удобном формате .
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Если возможно, укажите ссылку на среду онлайн-тестирования, чтобы другие люди могли опробовать ваш код!
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Примеры
Приведенные ниже примеры 1-проиндексированы.
n = 4
1
n = 100
11
n = 420
51
источник
n
всегда является единственным простым числом, делимым наn
. Это не особенное - просто так работают простые числа.Ответы:
Желе ,
87 байтМонадическая ссылка, принимающая член последовательности и возвращающая его индекс в последовательности.
Попробуйте онлайн!
Как?
источник
zip(head(), pop())
трюк действительно крутой. :)Haskell ,
807570 байт5 байтов сэкономить благодаря Laikoni
Попробуйте онлайн!
источник
p x=all((>0).mod x)[2..x-1]
которое не выполняется в течение 1, но в этом случае это не должно иметь значения.show x++show(x-1)
может быть сокращено доshow=<<[x,x-1]
.show
можно сделать более коротким способом, но по какой-то причине я не думал о карте concat.Желе ,
12, 10, 8 байтовПопробуйте онлайн!
1-2 байта сохранены благодаря @ nmjmcman101, и 2 байта сохранены благодаря @Dennis!
Объяснение:
источник
05AB1E ,
987 байтКод
Использует кодировку 05AB1E . Попробуйте онлайн!
объяснение
источник
'0-1'
является ли простое число.Шелуха ,
131110 байт1
-индексированный раствор:Попробуйте онлайн!
Ungolfed / Пояснение
Спасибо @Zgarb за
-3
байты!источник
£İp
эквивалентноṗ
. Кроме того, вы можете сохранить байт#…ḣ
вместо£f…N
.Python 2 , 87 байт
-2 байта благодаря @officialaimm . 1-индексироваться.
Тестирование.
источник
Pyth , 12 байт
Попробуйте онлайн! или Проверьте все тестовые случаи.
Как?
источник
Japt ,
1514121198 байт1-индексироваться.
Попытайся
источник
Æ
иÇ
?! Спасибо, @Oliver; Я обновлю, когда вернусь к компьютеру.2o+X
(с завершающим пробелом) будет работать вместо[XXÉ]
, хотя, если я когда-нибудь найду автоматическую балансировку[]
скобок, ваше решение будет на байт короче. (На самом деле 2, так как вы могли бы это сделатьõ_ZÉ]¬nÃèj
)[]
! : DРёда , 73 байта
Попробуйте онлайн!
1-индексироваться. Он использует поток для ввода и вывода.
Объяснение:
источник
Pyth , 14 байт
Попробуйте онлайн!
объяснение
источник
lfTmP_s+`d`tdS
, к сожалению, я не нашел твой трюк в то время сам :)Perl 6 , 45 байт
Попробуйте онлайн!
grep
Производит последовательность квалифицируя числа, то мы ищем ключ (:k
) (т.е. индекс) наfirst
номере в списке , что равняется входной параметр$_
.источник
C,
9994 байта1 проиндексировано. Мне больно писать тесты на простоту, которые в вычислительном отношении расточительны, но байты - это байты.
Если мы допустим некоторые действительно хрупкие вещи, компилируя на моей машине без оптимизации с помощью GCC 7.1.1, будут работать следующие 94 байта (спасибо @Conor O'Brien )
в противном случае эти гораздо более надежные 99 байтов делают свою работу
Полная программа, немного более читабельная:
источник
n=c;
вместоreturn c;
:i,c,m,k;f(n){c=i=1;for(;++i<n;c+=m==k){for(k=m=1;m*=10,m<i;);for(m=i*m+i-1;++k<m&&m%k;);}n=c;}
JavaScript (ES6),
49 4847 байт1-индексироваться. Ограничено размером стека вызовов вашего движка.
Попробуйте онлайн!
источник
Mathematica, 77 байтов
источник
QBIC , 25 байтов
объяснение
Для этого используется довольно сложная математическая вещь с наложенным приведением к строке. Создание версии, которая выполняет только конкатенацию на основе строк, на один байт длиннее:
источник
PHP , 203 байта
Попробуйте онлайн!
Использует индекс на основе 1 для вывода. Ссылка TIO имеет читабельную версию кода.
источник
Рубин , 42 + 9 = 51 байт
Использует
-rprime -n
флаги. 1-индексироваться.Работает путем подсчета всех чисел, равных или меньших от входных данных, которые удовлетворяют условию (или, более технически, всех чисел, которые удовлетворяют
n-1
условию). Поскольку входные данные гарантированно находятся в последовательности, нет риска ошибки случайного входа7
, который не «становится простым».Попробуйте онлайн!
источник
Рубин , 62 байта
Попробуйте онлайн!
1-индексированных
источник
Python 2 , 85 байт
1-индексированных
Тест
Улучшение ответа г-на Xcoder
источник
Java 8, 108 байт
0 индексированные
Объяснение:
Попробуйте онлайн.
источник
Stax , 10 байт
1- Индексируется
Запустите и отладьте его Объяснение
источник
Приборка , 33 байта
Попробуйте онлайн!
объяснение
Основная идея состоит в том, чтобы создать последовательность действительных чисел, а затем вернуть функцию индекса с карри.
источник