Số nguyên tố cộng gộp trong số các số nguyên tố x đầu tiên


16

Định nghĩa các số nguyên tố phụ gia:

  • Số đó có chính xác 2 ước được gọi là Thủ tướng Chính con số.

  • Con số đó là số nguyên tố và số tiền của họ về con số cũng là một số nguyên tố được gọi là Phụ Primes


Bài tập:

Cho một số nguyên x, tính tất cả các số nguyên tố cộng giữa các số nguyên tố đầu tiên x, 2được coi là số nguyên tố đầu tiên và số nguyên tố phụ. Các số được thể hiện trong cơ sở 10.

Quy tắc:

  • Đầu ra bao gồm tất cả các số nguyên tố phụ trong số các xsố nguyên tố đầu tiên
  • 0 < x < 151, cho thử thách này, cho mục đích chức năng
  • Vì các số nguyên tố cộng là tất cả các số nguyên, số thập phân không được phép (ví dụ: bạn nên xuất 2, không 2.0) và chúng không được hiển thị dưới dạng phân số.

Ví dụ:

10 -> 2 3 5 7 11 23 29

Giải trình:

10 số nguyên tố đầu tiên là 2 3 5 7 11 13 17 19 23 29và chỉ 2 3 5 7 11 23 29có tổng các chữ số là số nguyên tố tương ứng 2,3,5,7,2,5,11, chúng là các số nguyên tố cộng

Theo giải thích từ example 1, các trường hợp thử nghiệm khác có thể là:

2 -> 2 3

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

7 -> 2 3 5 7 11

Bảng xếp hạng:


LƯU Ý: Vui lòng đọc quy tắc 1 mới được chỉnh sửa, nó sẽ thay đổi định dạng đầu ra một chút


Mã của bạn phải càng ngắn càng tốt, vì đây là , vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng. Chúc may mắn!


Tốt rồi. Tuy nhiên, tôi khuyên bạn nên đợi khoảng 24 giờ vì mỗi khi bạn chấp nhận câu trả lời họ sẽ nhận được 15 rep, nhưng họ sẽ mất nó khi bạn không chấp nhận. Đôi khi hơi khó chịu khi lái tàu lượn siêu tốc và liên tục thua và giành được đại diện.
R

Câu trả lời:


8

Pyke, 9 7 byte

~p>#Yss

Hãy thử trực tuyến!

Các byte đơn is_primechỉ được đẩy 3 giờ trước. Github cam kết .

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

3
Bạn vừa chỉnh sửa ngôn ngữ của mình cho phù hợp với thử thách này? : D
Džuris

vậy ... scó nghĩa là is_prime về số và tổng trên danh sách?
Conor O'Brien

@ ConorO'Brien có, tôi quá tải nó cho danh sách và số nguyên
Blue

@ Džuris không, tôi đã có ý định trong một thời gian bởi vì tôi không có một nút nào để thực hiện kiểm tra chính, chỉ tính đến các số nguyên tố và ước số. Trước đây tôi sẽ phải làm điều _Pđó dài hơn 1 byte trong trường hợp này
Blue

1
một ứng cử viên mới cho "tính năng ngôn ngữ trẻ nhất để chiến thắng một thử thách"? dưới dây bằng ~ 2 giờ?
Sparr

8

Python 2, 124 118 byte

Với sự giúp đỡ từ 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])

Nguyê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

Kiểm tra tính nguyên thủy trong Python không vui chút nào.


Tôi (đọc: có conor để viết mã J mát mẻ cho tôi) đã thử nghiệm điều này với 9n, không hoạt động. : / n ** 2 không hoạt động, nhưng với chi phí 1 byte.
R

Hãy thử n*nchon**2
Conor O'Brien

8

Röda , 136 135 byte

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}

Hãy thử trực tuyến!

Đây là một hàm trả về các số nguyên tố phụ được yêu cầu.

Cách sử dụng: main { f(25) | print ap for ap }Mã sử ​​dụng phiên bản 0.12, thuộc nhánh roda-0.12.

Ung dung:

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
Ngôn ngữ tốt đẹp! Bạn đã làm điều này một thời gian dài trước đây nó trông như thế nào? 10/10, trông khá tuyệt.
R

Ngôn ngữ gọn gàng! Làm thế nào để bạn chạy chương trình?
Kritixi Lithos

Chỉ là để hỏi điều tương tự. Mặc dù tôi đã xem qua tài liệu, tôi không thể chạy hoặc biên dịch nguồn nào cả. Cách tiếp cận của bạn là gì?
Ông Xcoder

@KritixiLithos @ Xcoder123 Nó yêu cầu Java 8 và Gradle. Phiên bản tôi sử dụng trong câu trả lời này là 0.12 (trong nhánh riêng của nó). Các kho lưu trữ phải được nhân bản đệ quy. Để làm một cái lọ có thể chạy được, hãy gọi gradle fatJar. Bạn có nhận được bất kỳ lỗi khi biên dịch?
fergusq

@fergusq Running gradle fatJardường như không tạo ra bình cho tôi
Kritixi Lithos

5

Perl 6 , 53 byte

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

Thử nó

Mở rộng:

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

Nếu thử thách này được thay đổi để bạn thực hiện x lần đầu tiên, điều này có thể rút ngắn thành

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

5

Python 2 , 96 87 byte

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

Cảm ơn @xnor vì đã chơi golf 9 byte!

Hãy thử trực tuyến!



Tổng số có thể được thực hiện ngắn hơn như là int(`k`,36)%35. Tất cả các đầu vào sẽ đủ nhỏ để điều này đủ.
xnor


Ồ Tôi không chắc mình đã nghĩ như thế nào về một chế độ Boolean nhưng không phải là một tuple Boolean (nhận thức là 20/20), nhưng sum(p)int(`k`,36)%35là một thứ khác ... Cảm ơn!
Dennis

5

Toán học, 61 47 byte

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

Không hoàn toàn quen thuộc với các cú pháp tốc ký của Mathicala - đó là @*gì? Các *không giống như nó ở đúng nơi được phép nhân?
numbermaniac

3
@numbermaniac nó là thành phần chức năng. f@*gvề cơ bản là f@g@##&.
Martin Ender

4

Thạch , 10 byte

ÆNDS$€ĖÆPM

Hãy thử trực tuyến!

Làm sao?

Một cách tiếp cận hơi khác ...

Æ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
Sử dụng tốt đẹp của Ė.
Dennis


3

Thạch , 11 byte

ÆN€DS$ÆP$Ðf

Hãy thử trực tuyến!

Giải trình:

ÆN € DS $ P $ Đf Liên kết chính (args: z)
ÆN € Tạo các số nguyên tố z đầu tiên.
   DS $ Lấy tổng số.
      CheckP Kiểm tra xem đó có phải là số nguyên tố không.
        $ Tham gia hai liên kết cuối cùng và tạo thành một đơn nguyên.
         Ðf Chỉ giữ các yếu tố phù hợp với tiêu chí trên.

Tôi đã vượt qua.


2

MATL, 15 13 byte

Lưu 2 byte nhờ @Luis

:Yq"@V!UsZp?@

Dùng thử tại MATL Online

Giải trình

        % 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 À! Tôi biết có một số cách để rút ngắn phần đầu tiên đó. Cảm ơn
Suever


1

Ohm , 10 byte (CP437)

@▓_π;░_}Σp

Điều này sẽ ngắn hơn nhiều nếu tôi có vector hóa hoặc một thành phần cho các số nguyên tố N đầu tiên, nhưng than ôi, tôi đã không trước thử thách này (nhưng tôi làm ngay bây giờ !).

Giải trình:

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

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

Hãy thử trực tuyến!

Kiểm tra chính trong PowerShell hút.

forVòng lặp bên ngoài đi từ đầu vào $nxuống 0. Trong vòng lặp bên trong, chúng tôi sử dụng một trình tạo số nguyên tố trên $i, sau đó kiểm tra ifsum-sum ( -join'+'|iex) cũng là một số nguyên tố. Nếu vậy, chúng tôi đưa $ivào đường ống. Trong cả hai trường hợp, chúng tôi giảm $n--forvòng lặp bên ngoài tiếp tục. Các kết quả $iđược thu thập từ đường ống và một sự cố ngầm Write-Outputxảy ra khi hoàn thành chương trình.



0

MATL , 13 byte

:YqtFYA!XsZp)

Hãy thử nó tại MATL Online!

Giải trình

:      % 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.