Benzer yetkilere sahip sayılar


17

Bir tamsayı Verilen p> 1 , en küçük tamsayı bulmak q> p asal çarpanlarına içinde üstlerin liste böyle q o aynıdır p hayır, sipariş veya asal faktörlerin değerini önemli.

Örnekler

Asal çarpanlara p = 20 olan 2 2 x 5 1 . Asal çarpanlarına ayırma işleminde özdeş üsleri olan p'den büyük en küçük tamsayı q = 28 = 2 2 x 7 1'dir .

Asal çarpanlara p = 2500 olan 2 2 x 5 4 . Daha küçük tam sayı , p onun asal çarpanlara özdeş üs ile q = 2704 = 2 4 x 13 2 .

kurallar

  • Girişin 1'den büyük bir tamsayı olduğu garanti edilir.
  • Bu , bu yüzden bayttaki en kısa cevap kazanır.

Test senaryoları

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

2
Sadece referans olarak, bu OEIS'deki A081761'dir .
Jonathan Frech

Yanıtlar:


9

Kabuk , 10 bayt

§ḟ¤≡ȯÖLgp→

Çevrimiçi deneyin!

explantion

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

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

Çevrimiçi deneyin!

-Misha Lavrov'dan -4 bayt


Böyle bir Whiledöngü yazmanın daha özlü bir yoludur s=#;While[f@++s!=f@#];s.
Misha Lavrov

1
Bir bayt kaydetmek için f[x_]ile değiştirebilirsiniz f@x_.
numbermaniac

1
Ya da hatta kompozisyon-salata tanımlama yoluna gidin f=Last/@#&@*FactorInteger/*Sort.
Misha Lavrov

4

Pyth , 15 bayt

fqFmShMrPd8,QTh

Burada deneyin! veya Tüm test senaryolarını doğrulayın.

Bu nasıl çalışıyor?

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.

Alternatifler

Başka bir 15 byter:

LShMrPb8fqyQyTh

Ve birkaç (daha uzun) alternatif:

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


4

Brachylog , 13 bayt

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

Çevrimiçi deneyin!

Bir cevap gönderdiğimden çok uzun zaman geçti ...

açıklama

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

Piton 2 , 176 179 171 170 169 bayt

  • Olarak değiştirildi soru olarak üç bayt Eklenen üstlerin kümesi için üstlerin listesinde ; set(f)olarak değiştirildisorted(f) .
  • Ovs sayesinde sekiz bayt tasarruf edildi ; if / else bloğunu çarparak golf.
  • Bir bayt kaydedildi; golfed (n!=r)için (n>r).
  • Bir bayt kaydedildi; golfed while N>1için 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

Çevrimiçi deneyin!


3

Haskell , 107 bayt

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

Çevrimiçi deneyin! Kullanım örneği: f 2500verim 2704.

Bir kusuru işaret ettiği ve bir demet bayt kaydettiği için nimi'ye teşekkürler.


Yerleşik olmadan primeFactors(117 bayt)

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

Çevrimiçi deneyin!


2

Python - 141 bayt

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

Programınız için 2500giriş olarak yanlış değer çıktı gibi görünüyor ; 4624yerine 2704.
Jonathan Frech

while n-1:olabilir while~-n:.
Jonathan Frech

2

05AB1E , 15 bayt

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

Çevrimiçi deneyin!

açıklama

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.