Сатана-Primes
кто они?
они , Primes
содержащие 666
эти шайтан-Штрихи: [46663,266677,666599,666683,616669]
это НЕ :[462667,665669,36363631,555]
участок
Каждое число больше 6661 имеет сатанинские простые числа позади него
Соревнование
По заданному целому числу n>6661
найдите сатану-прайма позади (или равного) и ближе всего к себе.
Примеры
Целый n=30000
имеет 3 Сатана-Primes (SP) позади него: [6661, 16661, 26669]
.
Ваш код должен возвращаться, 26669
который находится ближе всего к нему
Тестовые случаи
Вход-> Выход
6662->6661
10000->6661
66697->66697 (a SP returns himself)
328765->326663
678987->676661
969696->966677
правила
Ваш код должен работать для любого n
в диапазоне вашего языка.
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах!
output the nth satan prime
вызова ...Ответы:
Mathematica, 82 байта
источник
Нейм , 9 байт
Объяснение:
Попробуйте онлайн!
источник
+6
пуш 666? Или Нейм просто тот металл?+x
означает 612 + код символаx
. Код6
бывает 54, поэтому 612 + 54 = 666.'\+*
=100,356,612,868
(плюс порядковый номер следующего символа)Желе ,
109 байтСэкономили 10% благодаря @Dennis!
Попробуйте онлайн!
объяснение
источник
ÆRẇ@Ðf666Ṁ
w
должен работать вместоẇ@
.Pyth ,
1514 байтовСохранено 1 байт с помощью Дейва .
Ошибки памяти для
969696
чего-либо и выше на моей машине, но это нормально, если ему достаточно памяти.Попробуйте здесь или проверьте комплект тестов.
Как?
Pyth , 14 байт
Попробуй это здесь!
источник
ef&/`T*3\6P_TS
"666"
менее эффективный способ описать строку 666, которая*3\6
05AB1E , 11 байт
Попробуйте онлайн!
источник
Bash + Core Utils,
5149 байтПринимает аргумент командной строки. Может быть довольно медленным с большими числами.
источник
|head -1
в конец.Mathematica,
64626153 байта-1 байт благодаря @KellyLowder
-8 байт (вау) благодаря @Notatree
объяснение
Принять вход. Мы уменьшаем его в следующих условиях:
вход не прост, ИЛИ
цифры входов не содержат три 6 в ряд.
Мы повторяем это, пока не будет достигнуто простое сатана.
источник
#//.i_/;!PrimeQ@i||ToString@i~StringFreeQ~"666":>i-1&
Perl 5 , 47 байт
46 байт кода + 1 для
-p
Попробуйте онлайн!
источник
Japt , 14 байт
Попробуй это
Наблюдение , поскольку там был а- на основе времени 50% бонус: завершает тест
969696
в возрасте до половины секунды.объяснение
Неявный ввод целого числа
U
.Создайте массив целых чисел от
1
доU
.Фильтр (
f
) простых чисел.Обратный.
Вернуть первый элемент, который возвращает истинное значение (в данном случае
1
) при прохождении через функцию, которая проверяет, если ...Целое число, преобразованное в строку (
s
), содержит (ø
) 666.Более быстрая альтернатива, 15 байт
Опять же, учитывая, что изначально был бонус, основанный на времени, вот альтернативное, и гораздо более быстрое, решение, которое мне больше не по душе.
Попробуй это
источник
PowerShell , 128 байт
Попробуйте онлайн!
PowerShell не имеет встроенных модулей факторизации, поэтому этот код заимствован из моего ответа на Prime Factors Buddies .
Мы берем ввод
$n
, затем объявляем новый,function f
который вычисляет факторы ввода$a
. Если вход$a
прост, то это вернет просто$a
.Основная часть программы - бесконечный
for()
цикл. Внутри цикла мы проверяем, является ли$n
-match
es против666
и$n
является ли простое число (то есть$n
соответствует ли все факторы$n
). Если это так, мы помещаем$n
в конвейер иexit
, с неявным выводом. В противном случае мы уменьшаем$n--
и продолжаем цикл.источник
Python 2 ,
7776 байтРедактировать: -1 байт благодаря @ Mr.Xcoder
Медленное время работы, работает в
O(n^2)
Попробуйте онлайн!
Еще одно 76-байтовое решение
Попробуйте онлайн!
С SymPy 73 байта
Попробуйте онлайн!
источник
lambda x:max(q for q in range(x+1)if"666"in`q`*all(q%t for t in range(2,q)))
- использоватьmax()
вместо[][-1]
PowerShell ,
716964 байтаПопробуйте онлайн!
328765 занимает ~ 30 секунд на моей машине, но время ожидания 60 секунд на Tio.run превышено.
678987 занимает ~ 1,5 минуты.
источник
MATL, 16 байт
Попробуйте это на MATL Online
объяснение
источник
C ++ 389 байт
Это полная программа!
Вам понадобится Boost для его компиляции. (Или скопируйте и вставьте в свою любимую онлайн-оболочку C ++.)
Запустите его из командной строки, давая n в качестве аргумента.
Ungolfed:
Ярлыки были сделаны с точки зрения тестирования случайных чисел. Исходный код начал тестирование возможных простых чисел на 6661 и увеличен на два. Вы также получите предупреждение компилятора из-за этого (-1) вместо npos.
Тем не менее, это работает довольно быстро. На моем старом AMD Sempron 130 потребовалось всего около 40 секунд, чтобы найти все 214 простых чисел сатаны до 1 000 000.
: ^ D
источник
Пакет bash + bsd-games, 33
Попробуйте онлайн .
источник
tail -n1
.tail
здесь. На самом делеtail -1
даже на 1 меньше.Python 3 ,
85 8380 байтУ Халварда на 4 байта меньше, потому что это сделано в Python 2.
Попробуйте онлайн!
Дайте ему немного времени, это очень медленно из-за его
O(n^2)
сложности.источник
JavaScript (ES6),
5554 байта-1 байт благодаря @ThePirateBay.
Очень медленно с большими входами. Тест на первичность, адаптированный по этому коду .
Задержки
10000
занял 10 секунд328765
занял 3 минуты678987
занял 9 минут969696
занял 16 минуттесты
Некоторые из них повесят ваш браузер на несколько минут.
Показать фрагмент кода
Быстрая версия, 56 байт
Завершает каждый тест менее чем за секунду.
источник
d==1
сd<2
тех порn>6661
.f=n=>/666/.test(n)&(g=d=>n%--d?g(d):d<2)(n)?n:f(n-1)
но выдаст ошибку рекурсии для больших чисел.f=n=>/666/.test(d=n)-eval("while(n%--d);d")?f(n-1):n
Ruby,
67,66,58, 56 байтовВключает
+7
байты для-rprime
Он довольно быстрый, вычисляет значения
~2^52
примерно за секунду и2^64
менее чем за 5 минут (MBP 2011, Ruby 2.3.1).источник
Stax , 10 байт
Запустите и отладьте его
Объяснение (без упаковки):
источник
PHP , 148 байт
Попробуйте онлайн!
источник
Perl 6 , 35 байт
Попробуйте онлайн!
Простое рекурсивное решение.
источник
C # (.NET Core) ,
117115112 байтовПопробуйте онлайн!
int
объявлений.Я уверен, что это можно сделать короче; может быть, рекурсивно вызывая
func f
и удаляя внешнююfor
петлю.Рекурсивный подход, 85 байт
Попробуйте онлайн!
Я не уверен, насколько хорошо этот подход вписывается в рамки code-golf из-за необходимости устанавливать
Func<int,int> f = null
первое, и этоf
вызывается снова, но не учитывается в байтах. Любое разъяснение будет оценено.источник