Biorąc pod uwagę liczbę naturalną , zwraca -tej kubańskie Prime .
Kubańskie liczby pierwsze
Liczba kubańska jest liczbą pierwszą formy
gdzie i lub
Detale
- Możesz użyć indeksowania opartego na 0 lub 1, cokolwiek najbardziej ci odpowiada.
- Możesz zwrócić liczbę pierwszą, biorąc pod uwagę indeks lub pierwsze liczb pierwszych w kolejności rosnącej, lub alternatywnie możesz zwrócić nieskończoną listę / generator, który wytwarza liczby pierwsze w kolejności rosnącej.
Przypadki testowe
Pierwsze kilka warunków jest następujące:
(#1-13) 7, 13, 19, 37, 61, 109, 127, 193, 271, 331, 397, 433, 547,
(#14-24) 631, 769, 919, 1201, 1453, 1657, 1801, 1951, 2029, 2269, 2437,
(#25-34) 2791, 3169, 3469, 3571, 3889, 4219, 4447, 4801, 5167, 5419,
(#35-43) 6211, 7057, 7351, 8269, 9241, 10093, 10267, 11719, 12097,
(#44-52) 12289, 13267, 13669, 13873, 16651, 18253, 19441, 19927, 20173
Więcej terminów można znaleźć w OEIS: Są one podzielone na dwie sekwencje, w zależności od tego, czy lub : A002407 i A002648
Odpowiedzi:
JavaScript (V8) , 54 bajty
Pełny program, który zawsze drukuje kubańskie liczby pierwsze.
Wypróbuj online!
UWAGA: Jeśli nie masz nieskończoną papieru w drukarce, nie próbuj uruchomić to w konsoli przeglądarki , gdzie
print()
może mieć inne znaczenie.JavaScript (ES6),
63 61 6059 bajtówZwracan liczbę pierwszą kubańską, indeksowaną 1.
Wypróbuj online!
W jaki sposób?
Jest to oparte na fakcie, że liczby pierwsze kubańskie są liczbami pierwszymi:
Powyższy wzór można zapisać jako:
lub dla dowolnegoy>0 :
czylix3−y3x−y dlax=y+1 ix=y+2 .
źródło
05AB1E ,
16129 bajtówGeneruje nieskończoną listę.
Zaoszczędzono 4 bajty dzięki formule Arnaulds dla portu Kevina Cruijssena .
Zaoszczędził kolejne 3 bajty dzięki Grimy
Wypróbuj online!
Wyjaśnienie
źródło
N^2+3
na stosie ” powinno być3*N^2
. Ponadto, dlaczego)
zamiast¯
? Ponieważ łatwiej jest pisać? I z jakiegoś powodu mam wrażenie, żeNnN‚3*¬sO‚
może być o 1 bajt krótszy, ale nie widzę tego. Niewielka alternatywa dla bajtów toNn3*DN3*+‚
. Ale prawdopodobnie widzę tylko rzeczy, których tam nie ma ..;) Dobra odpowiedź, więc daj +1 ode mnie.R ,
7573 bajtówWypróbuj online!
-2 bajty, zauważając, że mogę usunąć nawiasy, jeśli użyję
*
zamiast&
(inny priorytet).Wysyła
n
th kubańską liczbę pierwszą (indeksowany 1).Wykorzystuje fakt (podany w OEIS), że liczby pierwsze w Kubie mają postaćp=1+3n2 lub 4p=1+3n2 dla niektórych n , tj. n=a⋅p−13−−−−√ jest liczbą całkowitą dlaa=1 luba=4 .
Trick że nie pierwsza może być Formie2p=1+3n2 lub 3p=1+3n2 (*), a więc można zaoszczędzić 2 bajty przez sprawdzenie wzoru na ∈ { 1 , 2 , 3 , 4 } ( ) zamiast z ∈ { 1 , 4 } ( ).a∈{1,2,3,4} a ∈ { 1 , 4 }
1:4
c(1,4)
Nieco golfowa wersja kodu:
źródło
Wolfram Language (Mathematica) ,
666556 bajtówWypróbuj online!
J42161217 -1 przy użyciu
⌊ ⌋
zamiastFloor[ ]
attinat
⌊3#/4#⌋
zamiast⌊3#^2/4⌋
For[n=i=0,i<#,PrimeQ@f@++n&&i++]
zamiastn=2;i=#;While[i>0,i-=Boole@PrimeQ@f@++n]
źródło
Java 8,
94888684 bytes-6 bytes by using the Java prime-checker of @SaraJ, so make sure to upvote her!
-2 bytes thanks to @OlivierGrégoire. Since the first number we check is
7
, we can drop the trailing%n
from Sara's prime-checker, which is to terminate the loop forn=1
.-2 bytes thanks to @OlivierGrégoire by porting @Arnauld's answer.
Outputs space-delimited indefinitely.
Try it online.
Explanation (of the old 86 bytes version): TODO: Update explanation
Uses the formula of @Arnauld's JavaScript answer:pn=⌊3n24⌋+1,n≥3 .
źródło
v->{for(int n=7,i=3,p,x,d,r=0;;i+=++r%2*3,n+=i,System.out.print(x>1?x+" ":""))for(x=n,d=1;++d<n;x=x%d<1?0:n);}
, maybe someone can use this to golf? I couldn't.,p
and changingi+=++r%2*3,n+=i
ton+=i+=++r%2*3
, but then I'll still end up at 106 bytes. Using Java 11'sString#repeat
with prime-regex is 105 bytes:v->{for(int n=7,i=3,r=0;;n+=i+=++r%2*3)if(!"x".repeat(n).matches(".?|(..+?)\\1+"))System.out.println(n);}
.%n
isn't required, is it?Wolfram Language (Mathematica), 83 bytes
Try it online!
źródło
Galaretka , 12 bajtów
Wypróbuj online!
Na podstawie metody @ Arnaulda . Przyjmuje n na standardowe wejście i zwraca tyle pierwszych liczb kubańskich.
źródło
Wolfram Language (Mathematica), 83 bytes
To rozwiązanie da n-tą kubańską liczbę pierwszą z dodatkowymi korzyściami polegającymi na szybkości i zapamiętywaniu wszystkich poprzednich wyników w symbolu f.
Wypróbuj online!
źródło
Biała spacja , 180 bajtów
Litery
S
(spacja),T
(tab) iN
(nowa linia) dodane tylko jako wyróżnienia.[..._some_action]
dodano tylko jako wyjaśnienie.Outputs newline-delimited indefinitely.
Try it online (with raw spaces, tabs, and new-lines only).
Explanation in pseudo-code:
Port of my Java 8 answer, which also uses the formula from @Arnauld's JavaScript answer:pn=⌊3n24⌋ +1,n ≥ 3 .
źródło
Python 3 ,
110108102 bajtówPodobna metoda do mojej odpowiedzi Mathematica (tj.
isPrime(1+⌊¾n²⌋) else n++
) Przy użyciu tego sprawdzania liczb pierwszych w golfa i zwracania anonimowego generatora nieskończonegoWypróbuj online!
count
od 2 +1, tak żeand x>1
pożyczony w warcaby pierwszej nie jest potrzebny -7źródło
g=
. Włączyłem go tylko w pierwszej kolejności, ponieważ pozwoliło to na szybki podgląd TIO zprint(next(g) for i in range(52))
.Japt ,
1413 bytesNa podstawie wzoru Arnaulda . 1-indeksowany.
Spróbuj
1 bajt zapisany dzięki EmbodimentOfIgnorance.
źródło
(
.Rakieta , 124 bajty
Wypróbuj online!
Zwraca n-tą liczbę pierwszą kubańską, 0-indeksowaną.
Wykorzystuje formułę odpowiedzi JavaScript @ Arnauld
źródło
Python 3 , 83 bajty
drukuje kubańskie liczby pierwsze na zawsze.
Wypróbuj online!
Based on this prime generator. For every prime it checks whether an integer y exists that fulfills the equation for eitherx=1+y or x=2+y .
źródło
Perl 6,
3331 bytes-2 bytes thanks to Grimy
Try it online!
Anonymous code block that returns a lazy infinite list of Cuban primes. This uses Arnauld's formula to generate possible cuban primes, then
&is-prime
to filter them.Explanation:
źródło
1+0+|
can be just1+|
Pari/GP, 51 bytes
Using Arnauld's formula.
Try it online!
źródło
APL(NARS), 98 chars, 196 bytes
indented :
test:
it is based on: if y in N, one possible Cuban Prime is
the the next possible Cuban Prime will be
źródło