요소 부족 번호


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

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


함수 f가 f=@(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.