Szatani-Pierwsi
kim oni są?
są Primes
zawierające 666
to Szatan-Najwyżsi: [46663,266677,666599,666683,616669]
to NIE :[462667,665669,36363631,555]
Wątek
Każda liczba większa niż 6661 ma za sobą Szatana-Najwyższych
Wyzwanie
Podano liczbę całkowitą n>6661
znajdź Najwyższego Szatana za (lub równym) i najbliżej siebie.
Przykłady
Integer n=30000
ma 3 szatan liczb pierwszych (SP) za nim: [6661, 16661, 26669]
.
Twój kod musi zostać zwrócony26669
co jest najbliżej niego
Przypadki testowe
Wejście-> Wyjście
6662->6661
10000->6661
66697->66697 (a SP returns himself)
328765->326663
678987->676661
969696->966677
Zasady
Twój kod powinien działać dla każdego n
Twój w Twoim języku.
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach!
output the nth satan prime
wyzwanie ...Odpowiedzi:
Mathematica, 82 bajty
źródło
Neim , 9 bajtów
Wyjaśnienie:
Wypróbuj online!
źródło
+6
Push 666? A może Neim to tylko metal?+x
oznacza 612 + kod znakówx
. Kodem6
jest 54, więc 612 + 54 = 666.'\+*
=100,356,612,868
(plus porządek następnego znaku, który jest)Galaretka ,
109 bajtówZaoszczędź 10% dzięki @Dennis!
Wypróbuj online!
Wyjaśnienie
źródło
ÆRẇ@Ðf666Ṁ
w
powinien działać zamiastẇ@
.Pyt ,
1514 bajtówZapisano 1 bajt z pomocą Dave'a .
Błędy pamięci dla
969696
i cokolwiek wyższego na moim komputerze, ale dobrze jest, jeśli ma wystarczającą ilość pamięci.Wypróbuj tutaj lub sprawdź pakiet testowy.
W jaki sposób?
Pyth , 14 bajtów
Wypróbuj tutaj!
źródło
ef&/`T*3\6P_TS
"666"
jest mniej skutecznym sposobem na opisanie ciągu 666, który*3\6
05AB1E , 11 bajtów
Wypróbuj online!
źródło
Bash + Core Utils,
5149 bajtówBierze argument z wiersza poleceń. Może być dość wolny przy większych liczbach.
źródło
|head -1
do końca.Mathematica,
64626153 bajtów-1 bajt dzięki @KellyLowder
-8 bajtów (wow) dzięki @Notatree
Wyjaśnienie
Weź udział. Zmniejszamy to na następujących warunkach:
wejście nie jest liczbą pierwszą LUB
cyfry danych wejściowych nie zawierają trzech 6s z rzędu.
Powtarzamy to aż do osiągnięcia szatana.
źródło
#//.i_/;!PrimeQ@i||ToString@i~StringFreeQ~"666":>i-1&
Perl 5 , 47 bajtów
46 bajtów kodu + 1 dla
-p
Wypróbuj online!
źródło
Japt , 14 bajtów
Sprawdź to
Skoro nie było Bonus 50% czasu na bazie: sprawdzian finalizuje
969696
się pod pół sekundy.Wyjaśnienie
Domniemane wprowadzenie liczby całkowitej
U
.Wygeneruj tablicę liczb całkowitych od
1
doU
.Filtruj (
f
) liczby pierwsze.Rewers.
Zwraca pierwszy element, który zwraca prawdziwą wartość (w tym przypadku
1
) po przejściu przez funkcję, która sprawdza, czy ...Liczba całkowita przekonwertowana na string (
s
) zawiera (ø
) 666.Szybsza alternatywa, 15 bajtów
Ponownie, biorąc pod uwagę, że pierwotnie istniała premia uzależniona od czasu, oto alternatywne i znacznie szybsze rozwiązanie, którego nie mogę dalej grać w golfa.
Sprawdź to
źródło
PowerShell , 128 bajtów
Wypróbuj online!
Program PowerShell nie ma żadnych wbudowanych głównych faktoryzacji, więc pożycza kod z mojej odpowiedzi na temat znajomych Prime Factors .
Bierzemy dane wejściowe
$n
, a następnie deklarujemy nowy,function f
który oblicza czynniki wejściowe$a
. Jeśli dane wejściowe$a
są liczbą pierwszą, to właśnie zwróci$a
.Główną częścią programu jest nieskończona
for()
pętla. Wewnątrz pętli sprawdzamy, czy$n
-match
es jest666
i czy$n
jest liczbą pierwszą (tzn. Czy$n
pasuje do wszystkich czynników$n
). Jeśli tak, to umieszczamy$n
go w potoku iexit
, z niejawnym wynikiem. W przeciwnym razie zmniejszamy$n--
i kontynuujemy pętlę.źródło
Python 2,
7776 bytesEdit: -1 byte thanks to @Mr.Xcoder
Slow running time, runs in
O(n^2)
Try it online!
Another 76 bytes solution
Try it online!
With SymPy 73 bytes
Try it online!
źródło
lambda x:max(q for q in range(x+1)if"666"in`q`*all(q%t for t in range(2,q)))
- usemax()
instead of[][-1]
PowerShell,
716964 bytesTry it online!
328765 takes ~30 seconds on my machine, but times out the 60 second limit on Tio.run.
678987 takes ~1.5 minutes.
źródło
MATL, 16 bytes
Try it at MATL Online
Explanation
źródło
C++ 389 bytes
This is a full program!
You'll need Boost to compile it. (Or copy and paste into your favorite online C++ shell.)
Run it from the command-line giving n as argument.
Ungolfed:
Shortcuts were made in terms of random number testing. The original code started testing possible primes at 6661 and incremented by two. You'll also get a compiler warning because of that (-1) there instead of npos.
Still, this runs pretty quickly. It only took about 40 seconds to find all 214 satan primes under 1,000,000 on my old AMD Sempron 130.
:^D
źródło
Bash + bsd-games package, 33
Try it online.
źródło
tail -n1
.tail
here. In facttail -1
is even 1 less.Python 3,
85 8380 bytesHalvard's is 4 bytes shorter because it's done in Python 2.
Try it online!
Give it some time, it's extremely slow because of its
O(n^2)
complexity.źródło
JavaScript (ES6),
5554 bytes-1 byte thanks to @ThePirateBay.
Very slow with large inputs. Primality test adapted from this code golf answer.
Timings
10000
took 10 seconds328765
took 3 minutes678987
took 9 minutes969696
took 16 minutesTests
Some of these will hang your browser for several minutes.
Show code snippet
Faster Version, 56 bytes
Completes each test case in under a second.
źródło
d==1
withd<2
sincen>6661
.f=n=>/666/.test(n)&(g=d=>n%--d?g(d):d<2)(n)?n:f(n-1)
but will throw a recursion error for larger numbers.f=n=>/666/.test(d=n)-eval("while(n%--d);d")?f(n-1):n
Ruby,
67,66,58, 56 bytesIncludes
+7
bytes for-rprime
It's pretty fast, computing values up to
~2^52
in about a second and2^64
in under 5 minutes (2011 MBP, Ruby 2.3.1).źródło
Stax, 10 bytes
Run and debug it
Explanation (unpacked):
źródło
PHP, 148 bytes
Try it online!
źródło
Perl 6, 35 bytes
Try it online!
Straightforward recursive solution.
źródło
C# (.NET Core),
117115112 bytesTry it online!
int
declarations.I'm sure this could be made shorter; maybe by recursively calling
func f
and removing the outerfor
-loop.Recursive Approach, 85 bytes
Try it online!
I'm unsure how well this approach fits within the bounds of code-golf due to having to set the
Func<int,int> f = null
first, and thatf
is called again, but not counted towards the bytes. Any clarification would be appreciated.źródło