समान शक्तियों वाली संख्या


17

एक पूर्णांक को देखते हुए p> 1 , छोटी से छोटी पूर्णांक को खोजने 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 है।
जोनाथन फ्रेच

जवाबों:



5

गणितज्ञ, 61 बाइट्स

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

इसे ऑनलाइन आज़माएं!

@ मीशा लावरोव से -4 बाइट्स


इस तरह के Whileलूप लिखने का एक अधिक संक्षिप्त तरीका है s=#;While[f@++s!=f@#];s
मीशा लावरोव

1
आप एक बाइट को बचाने के f[x_]साथ बदल सकते हैं f@x_
नंबरमानस

1
या यहां तक ​​कि परिभाषित करने के रचना-सलाद मार्ग पर जाएं f=Last/@#&@*FactorInteger/*Sort
मीशा लावरोव

4

अजगर , 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

ब्रेकीलॉग , 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 बाइट्स

  • तीन बाइट्स जोड़े गए जैसे कि एक्सपोजर के सेट से एक्सप्लॉइट्स की सूची में प्रश्न बदल गया ; set(f)को बदल दिया गया था sorted(f)
  • आठ बाइट्स ओव्स के लिए धन्यवाद बचा ; गोल्फिंग अगर / अन्यथा गुणा करने के लिए नीचे ब्लॉक।
  • एक बाइट को बचाया; को गोल्फ (n!=r)दिया (n>r)
  • एक बाइट को बचाया; golfedwhile 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

एक दोष को इंगित करने और बाइट्स के एक गुच्छा को बचाने के लिए नीमी के लिए धन्यवाद।


बिना 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
जोनाथन फ्रेच

while n-1:हो सकता है while~-n:
जोनाथन फ्रेच


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.