첫번째 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
Džuris

그래서 ... s숫자에 is_prime을 의미하고 목록에 합계를 의미합니까?
코너 오브라이언

@ ConorO'Brien 예, 목록과 정수에 과부하가 걸렸습니다
Blue

@ Džuris 아니오, 프라임 검사를 수행 할 단일 노드가 없었기 때문에 프라임과 제수로만 팩토링하기 때문에 잠시 동안 의미가있었습니다. _P이 경우에 1 바이트 더 긴 작업을 수행하기 전에
Blue

1
"도전에서이기는 가장 어린 언어 기능"에 대한 새로운 경쟁자? ~ 2 시간 동안 전선 아래에서?
Sparr

8

파이썬 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

파이썬에서 우선 순위를 확인하는 것은 재미가 없습니다.


나는 (읽기 : 멋진 J 코드를 작성해야한다) 9n으로 이것을 테스트했지만 작동하지 않는다. : / n ** 2는 작동하지만 1 바이트의 비용이 듭니다.
Rɪᴋᴇʀ

시도 n*n에 대한n**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 }이 코드는 branch에있는 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ɪᴋᴇʀ

깔끔한 언어! 프로그램은 어떻게 운영합니까?
Kritixi Lithos

똑같은 것을 물어 보려고했다. 설명서를 살펴 보았지만 소스를 전혀 실행하거나 컴파일 할 수 없습니다. 당신의 접근 방식은 무엇입니까?
Mr. Xcoder

@KritixiLithos @ Xcoder123 Java 8 및 Gradle이 필요합니다. 이 답변에 사용하는 버전은 0.12입니다 (자체 지점에서). 저장소는 재귀 적으로 복제되어야합니다. 실행 가능한 항아리를 만들려면을 호출하십시오 gradle fatJar. 컴파일 할 때 오류가 발생합니까?
fergusq

@fergusq Running gradle fatJar은 나를 위해 항아리를 만들지 않는 것 같습니다
Kritixi Lithos

5

펄 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

파이썬 2 , 96 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에게 감사드립니다!

온라인으로 사용해보십시오!



숫자 합은있는 그대로 짧아 질 수 있습니다 int(`k`,36)%35. 모든 입력은 이것으로 충분할 정도로 작을 것입니다.
xnor


와! 나는 부울 딕셔너리 생각하지만 부울 튜플 (뒷 궁리가 20/20이다) 방법을 잘 모르겠지만, sum(p)그리고 int(`k`,36)%35뭔가 다른 ... 감사합니다!
Dennis

5

매스 매 티카, 61 47 바이트

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

Mathematica의 속기 구문에 완전히 익숙하지는 않습니다. 그게 @*뭐죠? 는 *이 곱셈을 할 수있는 권리 장소에서처럼 보이지 않는다?
numbermaniac

3
@numbermaniac 그것은 기능 구성입니다. f@*g본질적으로 f@g@##&입니다.
Martin Ender

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
의 좋은 사용 Ė.
Dennis



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 아! 나는 그 첫 부분을 단축시킬 방법이 있다는 것을 알고 있었다. 감사합니다
Suever


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는 파이프 라인에서 수집 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.