많은 소수


11

1234567891011121314151617과 같이 많은 수 (기본 10)가 주어지면 소수의 "하위 번호"를 찾으십시오.
소수 "하위 번호"는 연속 된 숫자 시퀀스 (입력에서 가져옴)이며 소수 (10 진수)를 나타냅니다.

  • 입력 : 숫자 (문자열, 파일 또는 원하는 것)
  • 출력 : 모든 소수 하위 번호가 어떻게 든 분리되었습니다 (목록, 파일, 쉼표로 구분 된 문자열 ...) 결과가 비어 있으면 원하는 방식 (하드 코딩 된 문자열, 빈 문자열, 횡설수설)을 취할 수 있지만 프로그램은 크래시.

  • 1234-> 2, 3, 23
    6542-> 5, 2
    14-> [.. 빈 출력]

이것은 코드 골프입니다. 가장 짧은 프로그램이 승리합니다!
[편집] : 추가 규칙, 프로그램을 설명해야합니다! 모두가 젤리에 유창하지는 않습니다 :)


3
PPCG에 오신 것을 환영합니다!
Luis felipe De jesus Munoz


1
명시되지 않은. 당신이 원하는대로하십시오.
Regis Portalez

1
팁 : 답변을 받기에는 너무 이릅니다. 다른 사람이 솔루션을 게시하지 못하게 할 수 있습니다.
Shaggy

2
@RegisPortalez 환영하고 좋은 도전! "수락"기능이 PPCG에서 네트워크의 다른 사이트와 같은 방식으로 더 이상 많이 사용되지 않는다는 것을 알게되었습니다. 우리는 모든 언어로 좋은 답변을 소중히 여기는 경향이 있습니다.
ngm

답변:


6

05AB1E (레거시) , 3 바이트

Œʒp

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

소수 인 입력의 부분 문자열.



이 작업에 적합한 언어
Jonathan Allan

5
@mob 인코딩에 따라 다릅니다. 에서 05AB1E 인코딩 이 응답은 3 바이트 길이이다.
Dennis

2
이에 따라, = 13 * 2659 34567가 소수, 잘못된 것 같다 tio.run/##yy9OTMpM/f//6KRTkwr@/zc2MTUzBwA
frosqh

2
@frosqh 실제로 새로운 05AB1E 릴리스에서 p (prime) 기능의 버그입니다. tio.run/##yy9OTMpM/f//6KRTkwr@/zc2MTUzBwA 이미 저장소에서 수정되었지만 TIO에 푸시되지 않았습니다. 그동안 답변을 레거시 버전으로 전환했습니다.
Kaldo

6

펄 6 , 28 바이트

{grep &is-prime,+«m:ex/.+/}

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

:exmatch 연산자에 대한 ( "exhaustive") 플래그 m는 가능한 모든 일치 .+(즉, 하나 이상의 문자의 모든 하위 문자열)를 겹치더라도 반환 합니다. 하이퍼 오퍼레이터 는 해당 Match객체 목록 을 숫자로 변환 한 다음로 소수를 필터링합니다 grep &is-prime.


여기에 내가 갈거야{+«m:ex/(.+)<?{$0.is-prime}>/}
브래드 길버트 b2gills

@ BradGilbertb2gills 저도 시도했습니다! 나는 그것이 더 길다는 것이 조금 실망했다.
Sean

설명해 주셔서 감사합니다. 나와 같은 Perl 4 공룡에게 항상 도움이됩니다!
Toby Speight


5

파이썬 2 , 66 65 바이트

P=k=1
n=input()
while~n+k:
 if`k`in`n`>0<P%k:print k
 P*=k*k;k+=1

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


while k<=n0 바이트 여야합니다 .while~n+k
Jonathan Allan

@JonathanAllan 감사합니다. 처음에는 숫자 자체가 출력에서 ​​제외되어야한다고 생각했지만 그렇지 않은 것 같습니다.
ovs

@JonathanAllan while성명서 의 코드를 설명해 주 시겠습니까? 이전에는 이런 유형의 코드를 보지 못했습니다. 또한 `` 사용을 보지 못했습니다 .
tarit goswami

1
@taritgoswami while stmt:stmt파이썬이 진실로 간주하는 가치가있는 한 계속 실행됩니다 . 파이썬에서 유일한 허위 정수는 0입니다. 따라서 코드는로 실행됩니다 ~n+k != 0. ~비트 보수 연산자이며와 ~n같습니다 -n - 1. ~n + k != 0<=> -n - 1 + k != 0<=> k != n + 1. 우리가 증가되면서 k의해 1모든 작업에서, k != n + 1이 경우에 해당입니다 k <= n.
ovs

1
@taritgoswami 그리고 Python 2 `n`와 동일합니다 repr(n). (Python 3에서는 작동하지 않습니다).
ovs


3

젤리 ,  5  4 바이트

Kevin Cruijssen에게 -1 감사합니다 ( 의 별칭입니다 ÆP).

ẆḌẒƇ

소수 목록을 허용하는 숫자 목록 *을 허용하는 모나드 링크.

* "문자열, 파일 또는 원하는 것"으로 이동-정수를 사용하려면 코드 앞에 접두사를 붙입니다. D

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

어떻게?

ẆḌẒƇ - Link: list of integers (digits)   e.g. [1,2,3,4]
Ẇ    - non-empty contiguous substrings        [[1],[2],[3],[4],[1,2],[2,3],[3,4],[1,2,3],[2,3,4],[1,2,3,4]]
 Ḍ   - convert to decimal (vectorises)        [1,2,3,4,12,23,34,123,234,1234]
   Ƈ - filter keep if:
  Ẓ  -   is prime?                            [2,3,23]

ÆP내가 실수하지 않으면 될 수 있습니까?
Kevin Cruijssen

아 네, 그것은 새로운 별칭 중 하나입니다-감사합니다!
Jonathan Allan

2

자바 (8), (148) 147 바이트

n->{for(int l=n.length(),i=l,j;i-->0;)for(j=l;j>i;){long k=2,x=new Long(n.substring(i,j--));for(;k<x;x=x%k++<1?0:x);if(x>1)System.out.println(x);}}

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

설명:

n->{                     // Method with String parameter and no return-type
  for(int l=n.length(),  //  Length of the input-String
          i=l,j;         //  Temp-integers
      i-->0;)            //  Loop `i` in the range [length, 0)
    for(j=l;j>i;){       //   Inner loop `j` in the range [length, 0)
      for(long k=2,      //    Set `k` to 2
               x=new Long(n.substring(i,j--)
                         //    Take the substring [`i`, `j`) from the input,
            );           //    convert it to a long, and set it as `x`
          k<x;           //    Inner loop as long as `k` is still smaller than `x`
        x=x%k++<1?       //     If `x` is divisible by `k`:
           0             //      Set `x` to 0
          :              //     Else:
           x);           //      Leave `x` unchanged
      if(x>1)            //    If `x` is now larger than 1 (a.k.a. If `x` is a prime):
        System.out.println(x);}}
                         //     Print `x` with a trailing newline to STDOUT

2

MATL , 9 바이트

&XfXUtZp)

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

설명

&Xf   % Implicit input: string. Push cell array of non-empty substrings
XU    % Convert to number. Vectorizes
t     % Duplicate
Zp    % Isprime. Vectorizes.
)     % Index. Keeps substrings indicated by the previous result. Implicit display

2

배쉬 + GNU 코어 활용도 : 80 77 바이트

for i in $(seq `tee a|wc -c`)
{
grep -oE .{$i}<a|factor|grep -oP ': \K\d+$'
}

이것은 가장 짧을 수는 없지만 더 나은 결과를 얻는 데 어려움을 겪고 있습니다. 도움 필요!

POSIX 만 고수함으로써 82를 얻었습니다.

for i in $(seq `tee a|wc -c`)
{
grep -oE .{$i}<a|factor|awk -F\  'NF<3{print$2}'
}

Bash 문자열 슬라이싱이 도움이 될 수 있습니까? 그것은 매개 변수 전에 확장 부끄러운 브레이스 범위입니다 ...
Toby Speight

@TobySpeight는 두 개의 루프가 필요하지만 (시작에 하나, 끝에 하나), 슬라이싱 대체 내부에 변수를 사용할 수는 없습니다. 그래도 Zsh가 허용합니다! 내 마음에 부족함의 주요 경로는 Awk를 사용하여 모든 하위 문자열을 생성하는 것입니다.
markasoftware





0

Pyth, 8 바이트

fP_TsM.:

테스트 스위트

입력을 문자열로 받아서 정수 목록을 출력합니다. 입력으로 사용할 수 있습니다int `끝에 여분의 바이트를 추가하여 .

설명:
fP_TsM.:  | Full code
fP_TsM.:Q |  with implicit variables added
          | Print (implicit)
      .:Q |  list of all substrings of the input
    sM    |   converted to integers
fP_T      |    filtered for prime numbers

그리고 `로 변환 int합니다 str.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.