비슷한 힘을 가진 숫자


17

정수 감안할 때 P> 1 , 가장 작은 정수 찾을 Q> p가 의 소인수 분해에 지수의 목록 있도록 q는 의의 동일 페이지 에는, 순서 또는 소인수의 가치를 중요.

p = 20의 소인수 분해 는 2 2 x 5 1 입니다. 소인수 분해에서 동일한 지수를 갖는 p 보다 큰 가장 작은 정수 는 q = 28 = 2 2 x 7 1 입니다.

p = 2500의 소인수 분해 는 2 2 x 5 4 입니다. 소인수 분해에서 동일한 지수를 갖는 p 보다 큰 가장 작은 정수 는 q = 2704 = 2 4 x 13 2 입니다.

규칙

  • 입력은 1보다 큰 정수 여야합니다.
  • 이것은 이므로 바이트 단위의 최단 답변이 이깁니다.

테스트 사례

Input | Output
------+-------
2     | 3
20    | 28
103   | 107
256   | 6561
768   | 1280
2500  | 2704
4494  | 4510
46552 | 46584
75600 | 105840

2
참고로 OEIS의 A081761 입니다.
Jonathan Frech

답변:


9

껍질 , 10 바이트

§ḟ¤≡ȯÖLgp→

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

외식

§ḟ       →     Find the first number starting from the input + 1 such that...
        p        The prime factorisation
       g         with equal elements grouped together
    ȯÖL          and sorted by length of groups
  ¤≡             has the same shape as the above applied to the input.

5

Mathematica, 61 바이트

(f[x_]:=Sort[Last/@FactorInteger@x];s=#;While[f@++s!=f@#];s)&  

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

@Misha Lavrov에서 -4 바이트


이러한 While루프 를 작성하는보다 간결한 방법은 입니다 s=#;While[f@++s!=f@#];s.
Misha Lavrov

1
당신은 대체 할 수 f[x_]f@x_바이트를 저장합니다.
numbermaniac

1
또는 정의의 구성-샐러드 길을 간다 f=Last/@#&@*FactorInteger/*Sort.
Misha Lavrov

4

Pyth , 15 바이트

fqFmShMrPd8,QTh

여기 사용해보십시오! 또는 모든 테스트 사례를 확인하십시오.

이것은 어떻게 작동합니까?

fqFmShMrPd8,QTh   ~ Full program. Q = first input.

f             h   ~ First input where the condition is truthy over [Q+1, Q+2, ...]
           ,QT    ~ The two element list [Q, current value (T)].
   m              ~ Map over ^ with d.
       Pd         ~ The prime factorization of d.
      r  8        ~ Run-Length encode ^.
    hM            ~ Get the first element of each.
 qF               ~ Check if the values are equal.
                  ~ Output implicitly.

대안

또 다른 15 바이 터 :

LShMrPb8fqyQyTh

그리고 몇 가지 (더 긴) 대안 :

fqFmSlM.gkPd,QTh
LSlM.gkPbfqyQyTh
LS/LPb{PbfqyQyTh
f!-FmlM.gkPd,QTh


4

Brachylog , 13 바이트

<.;?{ḋḅlᵐ}ᵐ=∧

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

답변을 게시 한 지 오래되었습니다.

설명

<.               Input < Output
 .;?             The list [Output, Input]
    {    }ᵐ      Map on [Output, Input]:
     ḋ             Prime decomposition
      ḅ            Group into sublists of consecutive equal elements
       lᵐ          Take the length of each sublist
           =∧    The result of the map must be the same for the Output and the Input

4

파이썬 (2) , 176 (179) 171 170 169 바이트

  • 변경 문제로 3 바이트 추가 지수의 설정지수의 목록을 ; set(f)로 변경되었습니다 sorted(f).
  • ovs 덕분에 8 바이트를 절약했습니다 . if / else를 골프화하면 곱셈으로 차단됩니다.
  • 바이트를 저장했습니다. 에 골프 (n!=r)를 쳤다 (n>r).
  • 바이트를 저장했습니다. 에 골프 while N>1를 쳤다 while~-N.
N=input();n=-~N
def F(N):
 r,f=0,[]
 while~-N:
	for n in range(2,-~N):
	 if N%n<1:f+=[1]*(n>r);f[-1]+=n==r;r=n;N/=n;break
 return sorted(f)
while F(N)!=F(n):n+=1
print n

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


3

하스켈 , 107 바이트

import Data.List
import Data.Numbers.Primes
p=sort.map(1<$).group.primeFactors
f x=until((==p x).p)(+1)$x+1

온라인으로 사용해보십시오! 사용 예 : f 2500수율 2704.

결함을 지적하고 많은 바이트를 절약 한 nimi에게 감사드립니다.


내장되지 않은 경우 primeFactors(117 바이트)

import Data.List
1%n=[]
x%n|0<-mod x n=n:div x n%n|m<-n+1=x%m
p=sort.map(1<$).group.(%2)
f x=until((==p x).p)(+1)$x+1

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


2

파이썬-141 바이트

def s(n):
 i=1;d={}
 while n-1:
  i+=1
  if n%i<1:d[i]=d.get(i,0)+1;n/=i;i=1
 return d.values()
a=input()
j=a+1
while s(a)!=s(j):j+=1
print j

프로그램이 잘못된 값을 2500입력으로 출력하는 것 같습니다 . 4624대신에 2704.
Jonathan Frech

while n-1:일 수 있습니다 while~-n:.
Jonathan Frech

2

05AB1E , 15 바이트

XµN‚εÓ0K{}ËNI›&

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

설명

Xµ                # Loop over N in [0 ...] until 1 match is found
  N‚              # pair N with input
    ε    }        # apply to each
     Ó            # list prime exponents
      0K          # remove zeroes
        {         # sort
          Ë       # check that they are equal
              &   # and
           NI›    # that N is greater than the input

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