요소 부족 번호


20

양의 정수 가 후임 수와 이전 수보다 소수를 소거하지 않고 (다중성을 세지 않고) 소수 인 경우이를 계수가 낮은 수라고 합니다.>2

즉, 과 , ω ( N은 ) 의 고유 소인수의 개수 N .ω()<ω(1)ω()<ω(+1)ω()

태스크

다음과 같은 I / O 형식 중에서 선택할 수 있습니다.

  • 정수 가져 와서 N 번째 계수가 낮은 숫자를 출력하십시오 . 이 항목을 선택하면 N 은 0 또는 1 색인이 될 수 있습니다.
  • 양의 정수 을 취하고 첫 번째 N 계수가 불량한 숫자를 출력하십시오 .
  • 순서를 무기한으로 인쇄하십시오.

이러한 허점 은 기본적으로 금지되어 있음을 유의하면서 모든 프로그래밍 언어로 표준 방법을 통해 입력을 받고 출력을 제공 할 수 있습니다 . 이것은 코드 골프이므로 규칙을 준수하는 가장 짧은 제출이 이깁니다.

경쟁 방법이 다르기 때문에 별도의 테스트 사례는 포함하지 않지만이 시퀀스의 처음 100 개 용어 인 OEIS A101934를 참조 할 수 있습니다 .

11, 13, 19, 23, 25, 27, 29, 37, 41, 43, 47, 49, 53, 59, 61, 64, 67, 71, 73, 79, 81, 83, 89, 97, 101, 103, 107, 109, 113, 121, 125, 131, 137, 139, 149, 151, 155, 157, 163, 167, 169, 173, 179, 181, 191, 193, 197, 199, 211, 221, 223, 227, 229, 233, 239, 241, 243, 251, 259, 263, 265, 269, 271, 277, 281, 283, 289, 293, 307, 309, 311, 313, 317, 331, 337, 341, 343, 347, 349, 353, 359, 361, 365, 367, 371, 373, 379, 383, 389, 397, 401, 407, 409, 419, 421, 431, 433, 439, 441, 443

예를 들어, 때문에 시퀀스 발생 ω는 ( 25 ) = 1 (5), ω ( 26 ) = 2 (2, 13)와 ω ( 24 ) = 2 이므로 (2, 3), ω ( 25 ) < ω ( 24 )ω ( 25 ) < ω ( 26 ) .25ω(25)=1ω(26)=2ω(24)=2ω(25)<ω(24)ω(25)<ω(26)


n = 각 값 앞에 선행을 출력 할 수 있습니까 ?
Steadybox

@Steadybox Sketchy,하지만 허용하겠습니다 :-/
Mr. Xcoder

대체 버전으로 추가했습니다.
Steadybox

답변:


7

Brachylog , 21 바이트

⟨+₁≡-₁⟩{ḋdl}ᵐ⌋>~↰₂?ẉ⊥

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

무한으로 인쇄합니다.

설명

⟨+₁≡-₁⟩                  Fork: The output of the fork is [Input + 1, Input -1]
       {   }ᵐ            Map:
        ḋdl                (predicate 2) the output is the length of the prime decomposition
                           of the input with no duplicates
             ⌋           Take the minimum result of that map
              >          This minimum is bigger than…
               ~↰₂?      …the output of predicate 2 with Input as input
                  ?ẉ     Write Input followed by a new line if that's the case
                    ⊥    False: backtrack and try another value for Input

5

젤리 , 13 12 바이트

Cr~ÆvÐṂN⁼Wø#

처음 n 팩터 불량 번호를 인쇄합니다 .

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

작동 원리

Cr~ÆvÐṂN⁼Wø#  Main link. No arguments.

          ø   Wrap the links to the left into a chain and begin a new chain.
           #  Read an integer n from STDIN and call the chain to the left with
              arguments k = 0, 1, 2, ... until n of them return a truthy value.
              Return those n values of k as an array.
C                 Complement; yield -k+1.
  ~               Bitwise NOT; yield -k-1.
 r                Range; yield [-k+1, -k, -k-1].
     ÐṂ           Yield those elements of [-k+1, -k, -k-1] for which the link to
                  the left returns the minimal value.
   Æv                 Count the number of unique prime factors.
                      Note that, for a negative argument, Æv counts -1 as well, and
                      0 is counted as a/the factor of 0. Negating the the arguments
                      eliminates the edge case 1 (no factors), which would be a
                      false positive otherwise.
                  For a factor-poor number, this yields [-k].
       N          Take the negatives of the resulting integers.
         W        Wrap; yield [k].
        ⁼         Test the results to both sides for equality.

5

파이썬 2 , 123 119 바이트

q=lambda n:sum(n%i<all(i%j for j in range(2,i))for i in range(2,n+1))
i=2
while 1:
 i+=1
 if q(i-1)>q(i)<q(i+1):print i

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


@FryAmTheEggman 감사합니다! 내가 당신의 제안을 사용하지 않더라도, 그것은 4 바이트를 절약 한 또 다른 접근법에 영감을주었습니다 .D
Rod

좋은! 나는 확실히 두 못생긴 람다 : 피할 수있는 방법이이었다
FryAmTheEggman

4

MATL , 26 24 22 바이트

`T@3:q+YFg!sdZSd0>?@QD

시퀀스를 무기한으로 인쇄합니다.

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

설명

`         % Do...while loop
  T       %   Push true. Will be used as loop condition
  @       %   Push (1-based) iteration index, k 
  3:q     %   Push [1 2 3] minus 1, that is, [0 1 2]
  +       %   Add, element-wise. Gives [k k+1 k+2]
  YF      %   Exponents of prime-factor decomposition. Gives a 3-row matrix
  g       %   Convert to logical: non-zero numbers become 1
  !s      %   Transpose, sum of each column. Gives a row vector of 3 elements, 
          %   which are the number of unique prime factors of k, k+1 and k+2 
  d       %   Consecutive differences. Gives a row vector of 2 elements
  ZS      %   Sign: replaces each number by -1, 0 or 1
  d       %   Consecutive difference. Gives a single number
  0>      %   Is it positive?
  ?       %   If so
    @Q    %     Push k+1
    D     %     Display
          %   End (implicit)
          % End (implicit). The stack contains true, which (is consumed and)
          % causes an infinite loop

3

껍질 , 22 바이트

f(ΠtSM<←ṙ1mȯLup§…←→)tN

시퀀스를 무기한으로 인쇄하고 온라인으로 시도 하거나 첫 번째 N을 보십시오!

또는 대신에 §oΛ>←t 사용할 수 있습니다ΠtSM<← .

설명

f(                  )tN  -- filter the tail of the naturals ([2,3…]) by:
  ΠtSM<←ṙ1m(Lup)§…←→     -- | takes a number as argument, example 11
                §…       -- | range of..
                  ←      -- | | the argument decremented (10)
                   →     -- | | to the argument incremented (12)
                         -- | : [10,11,12]
          m(   )         -- | map the following (example on 12) ..
              p          -- | | prime factors: [2,2,3]
             u           -- | | deduplicate: [2,3]
            L            -- | | length: 2
                         -- | : [2,1,2]
        ṙ1               -- | rotate by 1: [1,2,2]
    SM<                  -- | map the function (< X) over the list where X is ..
       ←                 -- | | the first element (1)
                         -- | : [0,1,1]
   t                     -- | tail: [1,1]
  Π                      -- | product: 1
                         -- : [11,13,19,23,25,27,29…

3

Pyth , 14 바이트

.f!-.ml{Pb}tZh

여기 사용해보십시오!

처음에는 Dopapp의 답변 에 대한 제안 이었으나 별도로 게시하도록 지시 했습니다.

어떻게 작동합니까?

.f!-. ml {Pb} tZh | 전체 프로그램. STDIN에서 입력을 받아 첫 번째 N을 STDOUT으로 출력합니다.

.f | (var : Z) 술어를 만족시키는 첫 번째 N 값을 출력합니다.
          } tZh | [Z-1, Z, Z + 1] 목록을 만듭니다.
    .m | (var : b) 최소한의 기능 값으로 요소를 가져옵니다.
        Pb | b의 주요 요인 b.
      l {| 중복 제거하고 길이를 얻습니다.
               | 계수가 나쁜 숫자의 경우 단일 톤으로 포장됩니다.
   -| Z를 제거하십시오.
  ! | 논리적 부정.

3

하스켈, 105 86 바이트

19 바이트를 절약 한 @Wheat Wizard, @Bruce Forte 및 @Laikoni에게 감사합니다.

[n|n<-[2..],d n<d(n-1),d n<d(n+1)] d x=[1|n<-[1..x],x`rem`n<1,all((>0).rem n)[2..n-1]]


사용시 rem ==0/=0함께 relaced 수 <1>0각각.
위트 마법사

보조 기능이 양호 하기 때문에 let를 정의 할 필요는 없습니다 d( 골프 규칙 가이드 참조 ). 또한 sum생략 할 수 있습니다. 비교는 목록에서 동일하게 작동합니다. 86 바이트 : 온라인으로 사용해보십시오!
Laikoni

2

옥타브 ,  87   83  79 바이트

@Cows 덕분에 저장할 @Luis Mendo에 바이트 감사를 저장하는 돌팔이 여섯 바이트!

f=@(n)nnz(unique(factor(n)));n=9;while++n if[f(n-1) f(n+1)]>f(n)disp(n);end;end

시퀀스를 무기한으로 인쇄합니다.

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

n =각 값 앞에 선행하는 73 바이트 :

f=@(n)nnz(unique(factor(n)));n=9;while++n if[f(n-1) f(n+1)]>f(n)n end;end

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


함수 ff=@(n)length(unique(factor(n)))1 바이트 미만 이 될 수 있다고 생각합니다 .
Kritixi Lithos

2

05AB1E , 14 13 바이트

n 번째 요소 빈약 한 숫자를 출력합니다 (1 인덱스).

µ3LN+Íf€gÀć›P

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

설명

µ                 # loop over N (1,2,3, ...) until counter equals input
 3L               # push the range [1,2,3]
   N+             # add current N
     Í            # subtract 2
      f           # get unique prime factors of each
       €g         # get length of each factor list
         À        # rotate left
          ć       # extract the head
           ›      # check if the remaining elements are strictly greater
            P     # product
                  # if 1, increment counter
                  # implicitly output final N

1
나는 단지 전환을 제안 µ하지 않았다. 그래서 나는 단지 나의 대안을 지적하려고한다 – 그것이 도움이된다면, 대체 N<N>Ÿ할 수있다 3LN+Í.
Mr. Xcoder

@ Mr.Xcoder : ®XŸN+마찬가지로 작동합니다. 또는 0®X)N+어떤 경우에는 À필요하지 않습니다. 불행히도 그들은 모두 같은 바이트 수로 끝납니다.
Emigna

1

Pyth, 30 25 바이트

#=hTI&>l{PhTKl{PT>l{PtTKT

이것은 나의 첫번째 진짜 Pyth 골프이다. 그래서 어떤 의견이라도 높이 평가된다.

Xcoder에 큰 감사합니다!

설명

#                         | Loop until error
 =hT                      | Add one to T (initially 10)
    I&                    | If both...
      >l{PhTKl{PT         | The number of unique prime factors of T+1 is greater than that of T (store in K) 
                 >l{PtTK  | And the number of unique prime factors of T-1 is greater than K (from before)
                        T | Then implicitly print T

티오 .


14 바이트 : .f!-.ml{Pb}tZh(인화 제 N) ( .f제 검색하는 N 개 이상의 조건을 만족하는 값 [1,2,3,...]과 변수 사용을 Z, }tZh정수 범위의 생성 [Z - 1 ... Z + 1], .m함께 (최소 함수 값이 요소의 목록을 반환을 b) l{Pb구별 제수의 카운트를 얻는다 목록에서 -삭제 Z, !논리적 부정 적용)
Mr. Xcoder

1
@ Mr.Xcoder, 와우 나는 곧 언젠가 그것을 얻을 것이라고 생각하지 않습니다! 당신은 그것의 자신의 대답이 장점이라고 말하지 않습니까?
Daniel

@Dopapp Ok, 나는 그것을 별도로 게시했습니다 . +1 Pyth 골프에 오신 것을 환영합니다!
Mr. Xcoder

당신의 접근 방식을 사용하여 25 바이트 .
Mr. Xcoder

아니. his +1, tis -1, while K은없이 할당되는 변수입니다 =. 예를 들어 K4에을 할당 K합니다 4. 그런 다음을 사용하여 액세스 할 수 있습니다 K.
Mr. Xcoder

1

자바 스크립트 (ES6), 94 바이트

0으로 인덱싱 된 N 번째 요소 빈약 한 숫자를 반환합니다.

f=(i,n=9)=>(P=(n,i=k=1)=>++k>n?0:n%k?P(n,1):i+P(n/k--,0))(n)>P(++n)&P(n)<P(n+1)&&!i--?n:f(i,n)

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

방법?

먼저 주어진 정수의 고유 한 소수 요소의 수를 반환 하는 P () 함수를 정의합니다 .

P = (                   // P = recursive function taking:
  n,                    //   n = input number to test
  i =                   //   i = flag to increment the number of prime factors
  k = 1                 //   k = current divisor
) =>                    //
  ++k > n ?             // increment k; if k is greater than n:
    0                   //   stop recursion
  :                     // else:
    n % k ?             //   if k is not a divisor of n:
      P(n, 1)           //     do a recursive call with n unchanged and i = 1
    :                   //   else:
      i +               //     add i and
      P(n / k--, 0)     //     do a recursive call with n / k and i = 0; decrement k

줄 바꿈 코드는 이제 다음과 같습니다.

f = (                   // given:
  i,                    //   i = input index
  n = 9                 //   n = counter
) =>                    //
  P(n) > P(++n) &       // increment n; if P(n - 1) is greater than P(n)
  P(n) < P(n + 1) &&    // and P(n) is less than P(n + 1)
  !i-- ?                // and we have reached the correct index:
    n                   //   return n
  :                     // else:
    f(i, n)             //   go on with the next value

1

Japt , 29 27 26 바이트

이것에 완전히 만족하지는 않지만 적어도 40 바이트를 넘는 첫 번째 시도보다 낫습니다!

N순서대로 숫자를 1 인덱스로 출력합니다 .

È=Jõ_+X k â ÊÃé)e>Xo)«´U}a

시도 해봐


설명

정수의 묵시적 입력 U.

È                       }a

X다음 함수를 통해 전달 될 때 true를 리턴 하는 첫 번째 정수 를 리턴하십시오.

=Jõ             )

배열 할당 [-1,0,1]X .

 _+X      Ã

먼저 현재 값을 추가하는 함수를 통해 해당 배열의 각 요소를 전달하십시오 X.

k â Ê

Ê고유 한 길이 ( )를 가져옵니다 (âk결과 ) 소인수 .

é

결과 배열을 오른쪽으로 회전하십시오.

e>Xo)

o마지막 요소 팝 ( )X 나머지 모든 요소가 그보다 큰지 확인하십시오.

«´U

그렇다면 감소 U하고 0인지 확인하십시오.




0

면도 , 130 (123) 117 바이트

import StdEnv
?n=[1\\q<-[p\\p<-[2..n]|and[gcd p i<2\\i<-[2..p-1]]]|n rem q<1]
f=[n\\n<-[3..]| ?n<min(?(n-1))(?(n+1))]

시퀀스의 무한 개수의 항과 같습니다. 그것은 모두 중첩 된 이해이기 때문에 그래프 축소를 잘 활용할 수 없으므로 그러한 나쁜 알고리즘조차도 상당히 느립니다.

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


0

APL NARS, 124 바이트, 62 자

{(⍵>1E4)∨⍵≤0:¯1⋄x←9+⍳10×⍵⋄⍵↑(∊{v←⍴∘∪∘π¨⍵+2-⍳3⋄2=+/v>2⌷v}¨x)/x}

1E4까지 응답을 반환 한 다음 -1 오류를 반환해야합니다. 9..10xargument에 충분한 숫자가 있다고 가정합니다. 테스트:

  z←{(⍵>1E4)∨⍵≤0:¯1⋄x←9+⍳10×⍵⋄⍵↑(∊{v←⍴∘∪∘π¨⍵+2-⍳3⋄2=+/v>2⌷v}¨x)/x}  
  z 0
¯1
  z 1
11 
  z 20
11 13 19 23 25 27 29 37 41 43 47 49 53 59 61 64 67 71 73 79 

4
150 바이트?
Shaggy

@Shaggy yes 대략적인 값이었습니다. 그러나 +-골프를하는 사람에게 맞습니다 ...
RosLuP

내 카운트에 따르면 여기의 점수는 152 바이트가 아닌 147 바이트입니다 (문자 수는 관련이 없습니다). 추가 자료 : codegolf.meta.stackexchange.com/q/9428/58974
Shaggy

@Shaggy 숫자 152는 해당 코드 만 포함하는 한 파일의 크기 (바이트)입니다 (과거를 복사하여 메모장 (윈도우) 문서에 해당 코드를 저장하고 해당 파일의 "속성"을 관찰하십시오)
RosLuP

우리가 여기서 바이트를 계산하는 방식이 아닙니다.
얽히고 설킨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.