Số có sức mạnh tương tự


17

Cho một số nguyên p> 1 , tìm số nguyên nhỏ nhất q> p sao cho danh sách các số mũ trong hệ số nguyên tố của q giống với số nguyên tố của p , bất kể thứ tự hay giá trị của các thừa số nguyên tố.

Ví dụ

Hệ số nguyên tố của p = 202 2 x 5 1 . Số nguyên nhỏ nhất lớn hơn p với số mũ giống hệt nhau trong hệ số nguyên tố của nó là q = 28 = 2 2 x 7 1 .

Hệ số nguyên tố của p = 25002 2 x 5 4 . Số nguyên nhỏ nhất lớn hơn p với số mũ giống hệt nhau trong hệ số nguyên tố của nó là q = 2704 = 2 4 x 13 2 .

Quy tắc

  • Đầu vào được đảm bảo là một số nguyên lớn hơn 1.
  • Đây là , vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng.

Các trường hợp thử nghiệm

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

2
Chỉ để tham khảo, đây là A081761 trong OEIS.
Jonathan Frech

Câu trả lời:


9

Husk , 10 byte

§ḟ¤≡ȯÖLgp→

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

Giải thích

§ḟ       →     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

Toán học, 61 byte

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

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

-4 byte từ @Misha Lavrov


Một cách ngắn gọn hơn để viết một Whilevòng lặp như vậy là s=#;While[f@++s!=f@#];s.
Misha Lavrov

1
Bạn có thể thay thế f[x_]bằng f@x_để lưu một byte.
numbermaniac

1
Hoặc thậm chí đi theo con đường thành phần-salad định nghĩa f=Last/@#&@*FactorInteger/*Sort.
Misha Lavrov

4

Bình thường , 15 byte

fqFmShMrPd8,QTh

Hãy thử nó ở đây! hoặc Xác minh tất cả các trường hợp thử nghiệm.

Cái này hoạt động ra sao?

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.

Lựa chọn thay thế

15 -terter khác:

LShMrPb8fqyQyTh

Và một vài lựa chọn thay thế (dài hơn):

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


4

Brachylog , 13 byte

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

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

Lâu lắm rồi tôi mới đăng câu trả lời

Giải trình

<.               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

Python 2 , 176 179 171 170 169 byte

  • Đã thêm ba byte khi câu hỏi thay đổi từ tập hợp số mũ thành danh sách số mũ ; set(f)đã được đổi thành sorted(f).
  • Lưu tám byte nhờ vào các lò nướng ; chơi golf nếu / khác chặn xuống để nhân.
  • Đã lưu một byte; golfed (n!=r)tới (n>r).
  • Đã lưu một byte; đánh gônwhile N>1tới 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

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


3

Haskell , 107 byte

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

Hãy thử trực tuyến!Ví dụ sử dụng: f 2500sản lượng 2704.

Cảm ơn nimi vì đã chỉ ra một lỗ hổng và tiết kiệm một loạt byte.


Không có primeFactorstích hợp (117 byte)

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

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


2

Python - 141 byte

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

Chương trình của bạn dường như xuất giá trị sai cho 2500làm đầu vào; 4624thay vì 2704.
Jonathan Frech

while n-1:có thể while~-n:.
Jonathan Frech

2

05AB1E , 15 byte

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

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

Giải trình

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

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.