Süper bir başbakan mı?


22

Arka fon

Bir süper asal olan endeks tüm asal listesinde de asal bir asal sayıdır. Sıralama şöyle gözüküyor:

3, 5, 11, 17, 31, 41, 59, 67, 83, 109, 127, 157, 179, 191, ...

Bu, OEIS'deki A006450 dizisidir .

Meydan okuma

Olumlu bir tamsayı verildiğinde, bunun bir süper üssü olup olmadığını belirleyin.

Test Kılıfları

2: yanlış
3: doğru
4: yanlış
5: doğru
7: yanlış
11: doğru
13: yanlış
17: doğru
709: doğru
851: yanlış
991: doğru

puanlama

Bu , yani her dilde en kısa cevap kazanır.


6
2 endeksi nedir ? Öyle mi 1 veya 0 ?
Dennis,

1
@Dennis dizisi 1 indekslidir; 2 endeksi 1'dir.
musicman523

2
Bir süper-asal olanı okuduktan sonra ilk düşünce: Süper-süper-asallar olarak adlandırdığınız şey nedir? Veya süper ^ 3-primes? Daha büyük olan, evrendeki atomların sayısı veya 11. süper ^ 11 üssü? Siz, sevgili internet sorumlusu, asal zamanımın birkaç saatini çalıyorsunuz!
J_F_B_M

@J_F_B_M Ona göre bir meydan okuma yap! : D
musicman523

1
@J_F_B_M 11, süper başbakan listesindeki endeksinin aynı zamanda bir süper başbakan (3), bu nedenle 11'inci süper başbakan, süper bir süper başbakan
Skidsdev

Yanıtlar:



14

Mathematica, 26 23 bayt

3 bayt kaydettiğiniz için user202729'a teşekkürler.

PrimeQ/@(#&&PrimePi@#)&

Bu, Mathematica'nın çoğu saçma ifadeyi değerlenmemiş (bu durumda, Andiki sayının mantığı ) bıraktığı gerçeğini kullanır ve Mapsadece listelemelere değil, herhangi bir ifadeye uygulanabilir. Böylece Andgirdiyi ve bunun gibi kalan asal endeksini hesaplıyoruz , ve sonra Mapbu ifadenin ilk Andişleyişini, Anddaha sonra değerlendirilebilecek şekilde boole'lere dönüştüren ilkellik testi yapıyoruz .


1
23 bayt: PrimeQ/@(#&&PrimePi@#)&.
user202729,

@ user202729 Güzel, teşekkür ederim. :)
Martin Ender

10

Jöle , 6 bayt

ÆRi³ÆP

Çevrimiçi deneyin!

Kullanımları benim Japt cevap olarak aynı tekniği: en fazla asal üret n , dizinini olsun n bu listede ve primality için kontrol edin. Eğer n tane kendini asal değildir, endeksidir 0 nedenle de asal değildir ki, 0 yine döndürülür.


9

Japt , 13 11 bayt

õ fj bU Ä j

Çevrimiçi test edin!

açıklama

Bu benim asıl gönderimden farklı olarak, aslında çok basit:

 õ fj bU Ä  j    
Uõ fj bU +1 j    Ungolfed
                 Implicit: U = input integer
Uõ               Generate the range [1..U].
   fj            Take only the items that are prime.
      bU         Take the (0-indexed) index of U in this list (-1 if it doesn't exist).
         +1 j    Add 1 and check for primality.
                 This is true iff U is at a prime index in the infinite list of primes.
                 Implicit: output result of last expression

4

Python 3 , 104 97 93 bayt

p=lambda m:(m>1)*all(m%x for x in range(2,m))
f=lambda n:p(n)*p(len([*filter(p,range(n+1))]))

0/ Olması gereken 1en fazla 4 bayt uzunluğunda True/False .

Çevrimiçi deneyin!


1
0/1 iyi. Güzel cevap! Değerini hiç kullanmadığınız için f, kodunuzu bu şekilde yeniden biçimlendirebilir ve bayt sayısından hariç tutabilirsiniz.
musicman523

@ musicman523 Tahmininiz için teşekkürler!
C McAvoy

3

Jöle , 7 bayt

ÆCÆPaÆP

Çevrimiçi deneyin!

ÆCasal sayısı daha az ya da sayar girişi (giriş ise, yani, e eşit , n asal, bu döner n ). Ardından ÆPbu indeksi birincillik için test eder. Son olarak, abu sonuç ile ÆPorijinal girişin (ilkellik testi) arasında mantıksal bir AND yapar .



2

05AB1E , 6 bayt

ÝØ<Øså

Çevrimiçi deneyin!

açıklama

ÝØ<Øså
Ý      # Push range from 0 to input
 Ø     # Push nth prime number (vectorized over the array)
  <    # Decrement each element by one (vectorized)
   Ø   # Push nth prime number again
    s  # swap top items of stack (gets input)
     å # Is the input in the list?

2

Pyth , 12 bayt

&P_QP_smP_dS

Çevrimiçi deneyin!

açıklama

&P_QP_smP_dS
                Implicit input
       mP_dS    Primality of all numbers from 1 to N
      s         Sum of terms (equal to number of primes ≤ N)
    P_          Are both that number
&P_Q            and N prime?

2

Pyke, 8 bayt

sI~p>@hs

Burada dene!

s        -  is_prime(input)
 I~p>@hs - if ^:
  ~p>    -    first_n_primes(input)
     @   -    ^.index(input)
      h  -   ^+1
       s -  is_prime(^)


1

QBIC , 33 bayt

~µ:||\_x0]{p=p-µq|~q=a|_xµp]q=q+1

açıklama

~   |   IF   ....  THEN (do nothing)
  :         the number 'a' (read from cmd line) 
 µ |        is Prime
\_x0        ELSE (non-primes) quit, printing 0
]           END IF
{           DO
            In this next bit, q is raised by 1 every loop, and tested for primality. 
            p keeps track of how may primes we've seen (but does so negatively)
    µq|     test q for primality (-1 if so, 0 if not)
p=p-        and subtract that result from p (at the start of QBIC: q = 1, p = 0)
~q=a|       IF q == a
_xµp        QUIT, and print the prime-test over p (note that -3 is as prime as 3 is)
]           END IF
q=q+1       Reaise q and run again.

1

Mathematica, 35 29 bayt

P=Prime;!P@P@Range@#~FreeQ~#&

@MartinEnder tarafından -6 bayt


P@P@Range@#bir demet kurtarmalıyım.
Martin Ender

1

Haskell, 121 bayt

f=filter
p x=2==(length$f(\a->mod(x)a==0)[1..x])
s=map(\(_,x)->x)$f(\(x,_)->p x)$zip[1..]$f(p)[2..]
r x=x`elem`(take x s)

1
(\(_,x)->x)olduğu snd, (\(x,_)->p x)olduğunu (p.fst). Her ikisi de fstve sndPrelude olduğundan, ithalat için gerek yok.
Laikoni,

Çok sık komutu ters tırnak kullanmayın : r x=elem x$take x s. Ancak, bu durumda pointfree (yine komutu ters tırnak tanıtan) gidip işlev adı atlayabilirsiniz: elem<*>(`take`s).
nimi,



1

Matlab, 36 34 bayt

Tom Carpenter sayesinde 2 bayt kaydedildi.

Yerleşik işlevleri kullanan çok saf bir uygulama:

isprime(x)&isprime(nzz(primes(x)))

1
Octave için sadece başka bir bayttan da tasarruf edebilirsiniz(p=@isprime)(x)&p(nnz(primes(x)))
Tom Carpenter

1

Python 2 , 89 bayt

def a(n):
 r=[2];x=2
 while x<n:x+=1;r+=[x]*all(x%i for i in r)
 return{n,len(r)}<=set(r)

Çevrimiçi deneyin!

Yapılar r, asalların listesi <= n; n asal sayı ise, o zaman nolduğunu len(r)'inci asal. Bu nedenle n, n'de r, n'de len (r) 'nin süper üssüdür.



0

Julia 0.6, 61 bayt

x bir süper üsse, 1, aksi takdirde 0 döndürür.

isprime türünde bir işlev kullanmadan.

x->a=[0,1];for i=3:x push!(a,0i%(2:i-1))end;a[sum(a)]&a[x]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.