最初のx個のプライムの中の加算プライム


16

加法素数の定義:

  • ちょうど2つの除数が呼び出されている番号プライム番号。

  • 素数でその桁数も素数である数は、加法素数と呼ばれます


仕事:

整数を与えx、最初の中のすべての添加の素数を計算するxと、素数2最初の素数と添加素数の両方とみなされています。数値は基数10で表されます。

ルール:

  • 出力は、最初のx素数の中のすべての加法素数で構成されます
  • 0 < x < 151、この課題のために、機能的な目的のために
  • 加法素数はすべて整数であるため、小数は許可されず(例:2ではなく、出力2.0する必要があります)、小数として表示してはなりません。

例:

10 -> 2 3 5 7 11 23 29

説明:

最初の10個の素数は2 3 5 7 11 13 17 19 23 29であり2 3 5 7 11 23 29、それぞれの桁数の素数のみを持ち、それぞれ2,3,5,7,2,5,11であるため、加法素数です。

の説明に従ってexample 1、他のテストケースは次のようになります。

2 -> 2 3

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

7 -> 2 3 5 7 11

リーダーボード:


注:新しく編集されたルール1をお読みください。これにより、出力形式にわずかな変更が加えられます。


これはであるため、はできるだけ短くする必要があります。そのため、バイト単位の最短回答が優先されます。幸運を!


それはいいです。ただし、回答を受け入れるたびに15人の担当者が得られますが、承認しないと失いますので、約24時間待つことをお勧めします。ジェットコースターに乗って継続的に担当者を失い、獲得するのは時々イライラします。
Rɪᴋᴇʀ

回答:


8

パイク、9 7バイト

~p>#Yss

オンラインでお試しください!

シングルバイトis_primeは3時間前にプッシュされました。Githubコミット

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

3
この課題に合わせて言語を編集しただけですか?:D
ジュリス

だから... sは数字のis_primeを意味し、リストの合計は?
コナーオブライエン

ConorO'Brien @はい、私はリストと整数のためにそれをオーバーロード
ブルー

@Džurisいいえ、私はプライムチェックを行うための単一のノードを持っていなかったので、しばらくの間意味していました。素数と除数にのみ因数分解します。私がしなければならなかっただろう前に、_Pこの場合には1バイト長である
ブルー

1
「挑戦に勝つための最も若い言語機能」の新しい候補?ワイヤーの下で〜2時間ですか?
スパー

8

Python 2、124 118バイト

Rikerの助けを借りて:

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])

元の:

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で素数をチェックするのは楽しいことではありません。


私(読む:クールなJコードを書くためにconorを得た)は、これを9nでテストしましたが、動作しません。:/ n ** 2は機能しますが、1バイトのコストがかかります。
Rɪᴋᴇʀ

お試しn*nn**2
コナー・オブライエン

8

ローダ136 135バイト

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}

オンラインでお試しください!

これは、要求された加法素数を返す関数です。

使用法:main { f(25) | print ap for ap }コードは、ブランチにあるバージョン0.12を使用しroda-0.12ます。

ゴルフをしていない:

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
素敵な言葉!あなたはずっと前に自分でこれを作ったように見えますか?10/10、かなりクールに見えます。
Rɪᴋᴇʀ

きちんとした言語!プログラムはどのように実行しますか?
クリチキシリソス

ちょうど同じことを尋ねるところだった。ドキュメントを確認しましたが、ソースを実行またはコンパイルすることはまったくできません。あなたのアプローチは何ですか?
ミスターXcoder

@KritixiLithos @ Xcoder123 Java 8とGradleが必要です。この回答で使用するバージョンは0.12です(独自のブランチで)。リポジトリは再帰的に複製する必要があります。実行可能なjarを作成するには、を呼び出しgradle fatJarます。コンパイル時にエラーが発生しますか?
-fergusq

@fergusq実行すると、gradle fatJar私のためにjarファイルを作成していないようだ
KritixiのLithos

5

Perl 6、53バイト

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

それを試してみてください

拡張:

{
  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
}

最初のxウルトラプライムを取得するようにこの課題が変更された場合、これは単に

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

5

パイソン296の 87バイト

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バイトのゴルフをしてくれた@xnorに感謝します!

オンラインでお試しください!


以下のように見える標識変数のリストを使用しては短いです。
-xnor

桁和はそのまま短くできますint(`k`,36)%35。すべての入力は、これで十分なほど小さくなります。
-xnor


うわー!ブール型の辞書ではなくブール型のタプル(後視力は20/20)をどう考えたかはわかりませんがsum(p)、それint(`k`,36)%35は別のものです...ありがとう!
デニス

5

Mathematica、61 47バイト

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

Mathematicaの短縮構文に完全に精通していない-それは何@*ですか?*それは乗算であることを適切な場所にありますように見えませんか?
numbermaniac

3
@numbermaniac関数の構成です。f@*g本質的にf@g@##&です。
マーティンエンダー

4

ゼリー、10 バイト

ÆNDS$€ĖÆPM

オンラインでお試しください!

どうやって?

少し異なるアプローチ...

Æ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
のいい使い方Ė
デニス


3

ゼリー、11バイト

ÆN€DS$ÆP$Ðf

オンラインでお試しください!

説明:

ÆN€DS $ÆP$Ðfメインリンク(引数:z)
ÆN€最初のzプライムを生成します。
   DS $デジタル合計を取ります。
      ÆP素数かどうかを確認します。
        $最後の2つのリンクに参加して、モナドを作成します。
         Ðf上記の基準に適合する要素のみを保持します。

私はゴルフをしました。


2

MATL、15 13バイト

@Luisのおかげで2バイト節約

:Yq"@V!UsZp?@

MATL Online試しください

説明

        % 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ああ!その最初の部分を短くする方法があることは知っていました。ありがとう
スーバー


1

オーム、10バイト(CP437)

@▓_π;░_}Σp

ベクトル化または最初のN個の素数のコンポーネントがある場合、これははるかに短くなりますが、残念ながら、私はこの挑戦の前にはいませんでした(しかし、今では!)。

説明:

@▓_π;░_}Σ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バイト

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

オンラインでお試しください!

PowerShellでのプライムチェックはダメです。

外側のforループは、入力から行く$nまで0。内側のループでは、我々は、使用首相ジェネレータのを$i確認した後、if(数字和を-join'+'|iex)も素数です。その場合$iは、パイプラインを使用します。いずれの場合も、デクリメント$n--し、外側のforループが継続します。結果$iのsはパイプラインから収集され、Write-Outputプログラムの完了時に暗黙的に発生します。



0

MATL、13バイト

:YqtFYA!XsZp)

MATL Online試しください

説明

:      % 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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.