İlk x Primer arasında Katkı Maddesi Asalları


16

Katkı Maddesinin Tanımı:

  • Tam olarak 2 bölen sayılara Asal sayılar denir .

  • Asal sayılara ve toplam sayılarına asal sayı olan sayılara Toplama Asalları denir


Görev:

Bir tamsayı verildiğinde x, hem birinci asal hem de toplam asal sayı olarak kabul edilerek , ilk xasal sayılar arasındaki tüm katkı primerlerini hesaplayın 2. Sayılar, temel 10'da temsil edilir.

Kurallar:

  • Çıktı, ilk xprimerler arasındaki tüm katkı primerlerinden oluşur
  • 0 < x < 151, bu zorluk için, işlevsellik amaçlı
  • Katkı primerlerinin tümü tamsayı olduğundan, ondalık sayılara izin verilmez (örneğin: çıktı almalısınız 2, olmamalı 2.0) ve kesir olarak gösterilmemelidir.

Örnekler:

10 -> 2 3 5 7 11 23 29

Açıklama:

İlk 10 asal sayıdır 2 3 5 7 11 13 17 19 23 29ve sadece 2 3 5 7 11 23 29rakamlarının asal sayıları sırasıyla bunlara sahiptir 2,3,5,7,2,5,11, bunlar sırasıyla primerlerdir.

Şu açıklamayı takiben example 1, diğer test durumları şunlar olabilir:

2 -> 2 3

25 -> 2 3 5 7 11 23 29 41 43 47 61 67 83 89

7 -> 2 3 5 7 11

Liderler Sıralaması:


NOT: Lütfen yeni düzenlenmiş kural 1'i okuyun, çıktı biçiminde biraz değişiklik getirir


Kodunuz mümkün olduğu kadar kısa olmalıdır, çünkü bu , bu nedenle bayttaki en kısa cevap kazanır. İyi şanslar!


Bu iyi. Yine de 24 saat beklemenizi tavsiye ederim, çünkü cevabı her kabul ettiğinizde 15 temsilci alırlar, ancak kabul etmediğinizde kaybederler. Bazen rollercoaster binmek ve sürekli kaybetmek ve tekrar kazanmak biraz sinir bozucu.
Rɪᴋᴇʀ

Yanıtlar:


8

Pyke, 9 7 bayt

~p>#Yss

Çevrimiçi deneyin!

Tek bayt is_primesadece 3 saat önce itildi. Github taahhüdü .

~p      -    All the prime numbers
  >     -   first input of them
   #Yss -  filter(^)
    Y   -     digits(^)
     s  -    sum(^)
      s -   is_prime(^)

3
Dilinizi bu zorluğa uyacak şekilde düzenlediniz mi? : D
Džuris

yani ... ssayılardaki is_prime ve listelerdeki toplam nedir?
Conor O'Brien

@ ConorO'Brien evet, listeler ve tamsayılar için aşırı yüklüyorum
Blue

@ Džuris hayır, bir süredir anladım çünkü prime kontrolü yapmak için tek bir düğüme sahip değilim, sadece primerlere ve bölenlere çarpanlara ayırıyorum. Bunu yapmak zorunda _P
Blue

1
"bir meydan okuma kazanmak için en genç dil özelliği" için yeni bir yarışmacı? tel altında ~ 2 saat?
Sparr

8

Python 2, 124 118 bayt

Riker'ın yardımıyla:

n,f,P=input(),filter,lambda n:all(n%i for i in range(2,n))
f(lambda x:P(sum(map(int,`x`)))&P(x),f(P,range(2,n*n))[:n])

Orijinal:

n,o,c,P=input(),0,2,lambda n:all(n%i for i in range(2,n))
while o<n:
 o+=P(c)
 if P(sum(map(int,`c`)))and P(c):print c
 c+=1

Python'da öncelikliliği kontrol etmek eğlenceli değil.


Ben (okuyun: benim için serin J kodu yazmak için conor var) 9n ile test ettik, çalışmıyor. : / n ** 2 çalışıyor, ancak 1 bayt maliyetle.
Rɪᴋᴇʀ

Deneyin n*niçinn**2
Conor O'Brien

8

Röda , 136 135 bayt

f n{P=[2]S=[2]seq 3,863|{|i|{P|{P+=i;s=0;((""..i)/"")|parseInteger _|s+=_;S+=i if[s in P and not(i in S)]}if{|p|[i%p>0]}_}if[#P<n]}_;S}

Çevrimiçi deneyin!

Bu, istenen katkı maddelerini döndüren bir işlevdir.

Kullanım: main { f(25) | print ap for ap }Kod, şubede bulunan 0.12 sürümünü kullanır roda-0.12.

Ungolfed:

function f(n) {
    primes := [2]
    ultraprimes := [2]
    seq(3, 863) | for i do
        break if [ #primes = n ]
        if [ i%p != 0 ] for p in primes do
            primes += i
            sum := 0
            ((""..i)/"") | parseInteger _ | sum += digit for digit
            ultraprimes += i if [ sum in primes and not (i in ultraprimes) ]
        done
    done
    ultraprimes
}

1
Güzel dil! Bunu kendiniz uzun zaman önce yaptınız mı? 10/10, oldukça havalı görünüyor.
Rɪᴋᴇʀ

Düzgün bir dil! Programı nasıl çalıştırıyorsunuz?
Kritixi Lithos

Aynı şeyi sormak üzereydi. Belgeleri gözden geçirmeme rağmen kaynağı hiç çalıştıramıyorum veya derleyemiyorum. Yaklaşımınız nedir?
Bay Xcoder

@KritixiLithos @ Xcoder123 Java 8 ve Gradle gerektirir. Bu cevapta kullandığım sürüm 0.12 (kendi dalında). Depo yinelemeli olarak klonlanmalıdır. Çalıştırılabilir bir kavanoz yapmak için çağırın gradle fatJar. Derlerken herhangi bir hata alıyor musunuz?
fergusq

@fergusq Running gradle fatJarbenim için bir kavanoz oluşturmuyor gibi görünüyor
Kritixi Lithos

5

Perl 6 , 53 bayt

{grep *.comb.sum.is-prime,grep(*.is-prime,0..*)[^$_]}

Dene

Expanded:

{
  grep
    *.comb.sum.is-prime, # find the ultra primes from:
    grep(
      *.is-prime,        # find the primes
      0..*               # from all integers
    )[ ^$_ ]             # grab only the first x primes
}

Bu meydan okuma ilk x ultraprim'i alacak şekilde değiştirildiyse, bu sadece kısaltılabilir

{grep({($_&.comb.sum).is-prime},0..*)[^$_]}

5

Python 2 , 96 87 bayt

p=-input(),0;m=k=1
while sum(p):
 m*=k*k;k+=1;p+=m%k,
 if m%k*p[int(`k`,36)%35]:print k

9 bayt golf yaptığı için @xnor'a teşekkürler!

Çevrimiçi deneyin!


Görünen o ki gösterge değişkenlerinin bir listesi daha kısa.
xnor

Rakam toplamı olduğu gibi daha kısa yapılabilir int(`k`,36)%35. Tüm girdiler bunun yeterli olacağı kadar küçük olacaktır.
xnor


Vaov! Nasıl bir Boole dict düşündüm emin değilim ama bir Boolean tuple (gezisi 20/20), ama sum(p)ve int(`k`,36)%35başka bir şey vardır ... Teşekkürler!
Dennis

5

Mathematica, 61 47 bayt

Prime@Range@#~Select~PrimeQ@*Tr@*IntegerDigits&

Mathematica'nın steno sözdizimlerine tamamen aşina değilim - bu @*nedir? *O çarpma olmak doğru yerde gibi görünmüyor?
numbermaniac

3
@numbermaniac bu fonksiyon kompozisyonu. f@*gaslında f@g@##&.
Martin Ender

4

Jöle , 10 bayt

ÆNDS$€ĖÆPM

Çevrimiçi deneyin!

Nasıl?

Biraz farklı bir yaklaşım ...

ÆNDS$€ĖÆPM - Main link: n (>0)           e.g. 10
ÆN         - nth prime number                 29
     €     - for each in range(1,nth prime)   [1,    2,    3,   ..., 27,    28,     29]
    $      - last two links as a monad
  D        -     decimal digit list          [[1],  [2],  [3],  ...,[2,7], [2,8],  [2,9]]
   S       -     sum                          [1,    2,    3,   ..., 9,     10,     11]
      Ė    - enumerate                       [[1,1],[2,2],[3,3],...,[9,27],[10,28],[11,29]]
       ÆP  - is prime? (vectorises)          [[0,0],[1,1],[1,1],...,[0,1], [0,0],  [1,1]]
         M - indices of maximal elements     [       2,    3,   ...,                29]

3
Güzel kullanımı Ė.
Dennis


3

Jöle , 11 bayt

ÆN€DS$ÆP$Ðf

Çevrimiçi deneyin!

Açıklama:

€N € DS $ ÆP $ Ðf Ana bağlantı (argümanlar: z)
ZN € İlk z primerini üretir.
   DS $ Dijital toplamı alın.
      ÆP Asal olup olmadığını kontrol edin.
        $ Son iki bağlantıya katılın ve bir monad yapın.
         Abovef Yalnızca yukarıdaki kritere uyan elemanları saklayın.

Ben fazla gittim.


2

MATL, 15 13 bayt

@Luis sayesinde 2 bayt kaydedildi

:Yq"@V!UsZp?@

MATL Online'da deneyin

açıklama

        % Implicitly grab input as a number (N)
:       % Create an array [1...N]
Yq      % Get the k-th prime for each element k in that array
"       % For each element in this list
  @     % Get the current element
  V!U   % Break it into digits
  s     % Sum up the digits
  Zp    % Determine if this is a prime number
  ?@    % If it is, push the value to the stack
        % Implicit end of for loop and implicit display of the stack

@LuisMendo Ah! İlk kısmı kısaltmanın bir yolu olduğunu biliyordum. Teşekkürler
Suever


1

Ohm , 10 bayt (CP437)

@▓_π;░_}Σp

İlk N primerleri için vektörizasyon veya bir bileşenim olsaydı bu çok daha kısa olurdu, ama ne yazık ki, bu meydan okumadan önce yapmadım (ama şimdi yapıyorum !).

Açıklama:

@▓_π;░_}Σp    Main wire, arguments: a

@▓  ;         Map...over the range (1..n)
  _π            nth prime
     ░        Select from ToS where...
      _}Σ       The sum of all digits
         p      is prime

1

PowerShell , 120 bayt

for($n=$args[0];$n){for(;'1'*++$i-notmatch($s='^(?!(..+)\1+$)..')){}if('1'*([char[]]"$i"-join'+'|iex)-match$s){$i};$n--}

Çevrimiçi deneyin!

PowerShell'de öncelikli kontrol berbat.

Dış fordöngü girişten $naşağıya gider 0. İç döngü olarak, bir kullanma ana jeneratör ile $ikontrol daha sonra, if(basamak-toplamı -join'+'|iex), bir asal. Eğer öyleyse, $iboru hattını koyduk . Her iki durumda da azalırız $n--ve dış fordöngü devam eder. Ortaya çıkan $is boru hattından toplanır ve Write-Outputprogram tamamlandığında örtük bir olay olur.



0

MATL , 13 bayt

:YqtFYA!XsZp)

MATL Online'da deneyin !

açıklama

:      % Range [1 2 ... n], where n is implicit input
Yq     % Array of first n prime numbers
t      % Duplicate
FYA    % Convert to decimal digits. Gives a matrix, where each original 
       % number corresponds to a row. Left-pads with zeros if needed
!Xs    % Sum of rows
Zp     % Is prime? (element-wise)
)      % Use as logical index into the array of the first n prime numbers
       % Implicitly display
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.