Emirp является непалиндромным премьером , который при обратном, также премьер.
Список базовых 10 эмиратов можно найти в OEIS . Первые шесть:
13, 17, 31, 37, 71, 73
Тем не менее, из-за правила обращения, эмирпы в каждой базе разные. Например, первые шесть бинарных эмиратов:
Bin | 1011, 1101, 10111, 11101, 101001, 100101
Dec | (11 , 13 , 23 , 29 , 37 , 41 )
... и в шестнадцатеричном виде они являются:
Hex | 17, 1F, 35, 3B, 3D, 53
Dec | (23, 31, 53, 59, 61, 83)
Интересный факт: нет emirps в унарный , как каждое число является палиндромом.
Соревнование
Ваша задача - создать функцию (или полную программу), которая принимает два параметра, и , и генерирует список первых эмирпов в базе b .
Правила / Детали:
- и оба положительные целые числа больше .
- Вы можете принять : то есть база будет между двоичной и шестнадцатеричной числами.
- Вы должны быть в состоянии вычислить для значений до .100
- Сгенерированный список может быть в базе или в стандартной целочисленной базе вашего языка, если вы укажете это в своем ответе.
- Встроенные проверки э.и.и.м. не допускаются (встроенные тесты на простоту подходят)
- Вы не можете жестко закодировать эмираты или читать из любых внешних файлов.
- Стандартные лазейки, как всегда, запрещены.
- Это код-гольф , поэтому выигрывает самый короткий ответ (в байтах).
Тестовые случаи
Для каждого теста я включил список в базу b
и его 10 базовых эквивалентов.
B = 2, N = 10
BIN: [1011, 1101, 10111, 11101, 100101, 101001, 101011, 101111, 110101, 111101]
DEC: [11, 13, 23, 29, 37, 41, 43, 47, 53, 61]
B = 3, N = 5
BASE3: [12, 21, 102, 201, 1011]
DEC: [5, 7, 11, 19, 31]
B = 12, N = 7
BASE12: [15, 51, 57, 5B, 75, B5, 107]
DEC: [17, 61, 67, 71, 89, 137, 151]
B = 16, N = 4
HEX: [17, 1F, 35, 3B]
DEC: [23, 31, 53, 59]
Вы можете протестировать вашу программу дальше на моем (не в гольф) примере с Python на repl.it
05AB1E , 17 байт
Использует кодировку CP-1252 .
Порядок ввода:
n, b
Вывод в базе-10.
Попробуйте онлайн!
объяснение
источник
Mathematica, 70 байт
Работает на
0 <= n <= 100
а2 <= b <= 16
. Из спискаPrime@Range@437
первых437
простых чисел найдите,Cases
p
где theIntegerReverse
r
ofp
in base#2
не равноp
и также является простым, затем возьмите первое#
такоеp
.Вот 95-байтовое решение, которое работает для произвольных
n>=0
иb>=2
:источник
IntegerReverse
. Конечно! Ницца.Reap
ИНГ допускается в сноске:For[i=j=0,j<#,If[(r=IntegerReverse[p=Prime@++i,#2])!=p&&PrimeQ@r,j++;Sow@p]]&
Perl, 262 байта
Удобочитаемый:
c
преобразует данное число в основание$b
иd
преобразует данное число из основания$b
обратно в десятичное число путем нахождения первого числа, которое возвращает указанное базовое$b
число при передаче вc
. Затем цикл for проверяет, является ли это палиндромом, и являются ли оба числа простыми, используя составное регулярное выражение.источник
Mathematica 112 байт
пример
Найдите первые 10 Эмипов в гексе; вернуть их в десятичном виде.
Ungolfed
источник
Perl 6 , 91 байт
Возвращает список эмиратов в базе 10.
источник
Python 3 ,
232214191188 байтПопробуйте онлайн!
источник
C
293286261 байтУлучшено @ceilingcat , 261 байт:
Попробуйте онлайн!
(Этот человек как постоянно следит за мной по PPCG и улучшает мои комментарии в комментариях, и как только я отвечаю, чтобы поблагодарить его, он просто удаляет комментарий и исчезает, смеется. Welp, еще раз спасибо!)
Улучшено @movatica , 286 байт:
Попробуйте онлайн!
Мой оригинальный ответ, 293 байта:
Скомпилируйте
gcc emirp.c -o emirp -lm
и запустите./emirp <b> <n>
. Печатает разделенные пробелами эмирты в базе-10.источник
JavaScript (ES6),
149148141140 байтВозвращает разделенный пробелами список эмиратов в базе b. (Может быть на 2 байта короче, вместо этого возвращая десятичный список.)
Контрольные примеры
Показать фрагмент кода
источник
Python 2 , 133 байта
Попробуйте онлайн!
Выводит каждое число в новую строку в базе 10
источник
APL (NARS), 87 символов, 174 байта
Результат будет в базе 10. Тест и результаты:
{(⍺⍴⍨⌊1+⍺⍟⍵)⊤⍵}
сделал бы преобразование⍵
в базу⍺
, массив целочисленный результат;0π⍵
вернет true [1], если⍵
будет простым, иначе он вернет 0.источник