एक वर्गमूल को सरल कीजिए


29

एक सकारात्मक पूर्णांक को देखते हुए n, सभी वर्ग कारकों को निकालकर वर्गमूल √nको रूप में सरल a√bबनाएं। आउटपुट जितना संभव हो उतना छोटा के साथ a,bसकारात्मक पूर्णांक होना चाहिए ।n = a^2 * bb

आप उत्पादन हो सकता है aऔर bकिसी भी उचित प्रारूप में किसी भी क्रम में। आप 1निहितार्थ के आउटपुट को छोड़ नहीं सकते हैं ।

के लिए आउटपुट n=1..36के रूप में (a,b):

1 (1, 1)
2 (1, 2)
3 (1, 3)
4 (2, 1)
5 (1, 5)
6 (1, 6)
7 (1, 7)
8 (2, 2)
9 (3, 1)
10 (1, 10)
11 (1, 11)
12 (2, 3)
13 (1, 13)
14 (1, 14)
15 (1, 15)
16 (4, 1)
17 (1, 17)
18 (3, 2)
19 (1, 19)
20 (2, 5)
21 (1, 21)
22 (1, 22)
23 (1, 23)
24 (2, 6)
25 (5, 1)
26 (1, 26)
27 (3, 3)
28 (2, 7)
29 (1, 29)
30 (1, 30)
31 (1, 31)
32 (4, 2)
33 (1, 33)
34 (1, 34)
35 (1, 35)
36 (6, 1)

ये OEIS A000188 और A007913 हैं

संबंधित: एक अधिक जटिल संस्करण


हम पहले भी ऐसा कर चुके हैं , और यह यहां से जुड़ी चुनौती की नकल के रूप में बंद था।
दोष

जवाबों:


13

जेली , 9 बाइट्स

ÆE;0d2ZÆẸ

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को सत्यापित करें

यह काम किस प्रकार करता है

ÆE;0d2ZÆẸ  Main link. Argument: n

ÆE         Exponents; generate the exponents of n's prime factorization.
  ;0       Append 0 since 1ÆE returns [].
    d2     Divmod by 2.
      Z    Zip/transpose to group quotients and remainders.
       ÆẸ  Unexponent; turn the exponents of prime factorizations into integers.

3
UTF-8 में, यह है, लेकिन जेली एक कस्टम कोड पेज का उपयोग करता है। बाइट्स यह करने के लिए शीर्ष लेख अंक में जोड़ देते हैं।
डेनिस

आपको लगता है कि टिप्पणी पोस्ट एक बहुत है, तो हो सकता है आप बाइट्स स्पष्ट की तरह (उदाहरण के लिए करना चाहिए: [bytes](link-to-byes) (not UTF-8)
NoOneIsHere

12

PARI / GP, 12 बाइट्स

n->core(n,1)

corenडिफ़ॉल्ट रूप से चौकोर भाग लौटाता है , लेकिन दूसरे तर्क ध्वज को 1 पर सेट करने से दोनों भाग वापस आ जाते हैं। आउटपुट ऑर्डर है (b, a), जैसे (n->core(n,1))(12) -> [3, 2];


11

पायथन 2, 43 बाइट्स

k=n=input()
while n%k**2:k-=1
print k,n/k/k

Ideone पर इसका परीक्षण करें ।


6

MATL , 12 बाइट्स

t:U\~f0)GyU/

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

व्याख्या

t     % Take input n implicitly. Duplicate
:U    % Push [1 4 9 ... n^2]
\~    % True for entries that divide the input
f0)   % Get (1-based) index of the last (i.e. largest) dividing number
G     % Push input again
y     % Duplicate index of largest dividing number
U     % Square to recover largest dividing number
/     % Divide input by that. Implicitly display stack


2

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

#/.{a_ b_^_:>{a, b},_[b_,_]:>{1,b}}&

यह #निम्नलिखित नियमों के अनुसार सभी इनपुट ( ) को बदलने के लिए कहता है : (1) एक संख्या, a , बार का वर्गमूल b को प्रतिस्थापित किया जाना चाहिए {a, b} और एक फ़ंक्शन b को {1, b द्वारा प्रतिस्थापित किया जाना चाहिए। }। ध्यान दें कि फ़ंक्शन मानता है कि इनपुट फॉर्म का होगा,Sqrt[n]। यह अन्य प्रकार के इनपुट के साथ काम नहीं करेगा।

यह अनाम फ़ंक्शन Mathematica के लिए असामान्य रूप से गुप्त है। इसका पूर्ण रूप दिखा कर इसे कुछ हद तक स्पष्ट किया जा सकता है, इसके बाद मूल छोटे रूपों को प्रतिस्थापित किया जा सकता है।

Function[
   ReplaceAll[
      Slot[1],
      List[
         RuleDelayed[Times[Pattern[a,Blank[]],Power[Pattern[b,Blank[]],Blank[]]],List[a,b]],
         RuleDelayed[Blank[][Pattern[b,Blank[]],Blank[]],List[1,b]]]]]

जो जैसा है वैसा है

   ReplaceAll[
      #,
      List[
         RuleDelayed[Times[Pattern[a,Blank[]],Power[Pattern[b,Blank[]],Blank[]]],List[a,b]],
         RuleDelayed[Blank[][Pattern[b,Blank[]],Blank[]],List[1,b]]]]&

तथा

ReplaceAll[#, 
  List[RuleDelayed[
    Times[Pattern[a, Blank[]], 
     Power[Pattern[b, Blank[]], Blank[]]], {a, b}], 
   RuleDelayed[Blank[][Pattern[b, Blank[]], Blank[]], {1, b}]]] &

तथा

ReplaceAll[#, 
  List[RuleDelayed[Times[a_, Power[b_, _]], {a, b}], 
   RuleDelayed[Blank[][b_, _], {1, b}]]] &

तथा

ReplaceAll[#, {RuleDelayed[a_*b^_, {a, b}], RuleDelayed[_[b_, _], {1, b}]}]&

तथा

ReplaceAll[#, {a_*b^_ :> {a, b}, _[b_, _] :> {1, b}}] &


1

मतलाब, 51 बाइट्स

x=input('');y=1:x;z=y(~rem(x,y.^2));a=z(end)
x/a^2

व्याख्या

x=input('')       -- takes input
y=1:x             -- numbers from 1 to x
z=y(~rem(x,y.^2)) -- numbers such that their squares divide x
a=z(end)          -- biggest such number (first part of output)
x/a^2             -- remaining part

1

जावास्क्रिप्ट (ECMAScript 2016), 40 बाइट्स

n=>{for(k=n;n%k**2;k--);return[k,n/k/k]}

मूल रूप से डेनिस के पायथन 2 का एक जावास्क्रिप्ट पोर्ट उत्तर है

इसे JSBin पर आज़माएँ

नोट: यह सख्त मोड में काम नहीं करता है, क्योंकि kयह कहीं भी आरंभीकृत नहीं है। इसे सख्त मोड में काम करने के लिए, k=nलूप में बदलना चाहिए let k=n


1

हास्केल, 43> 42 बाइट्स

जानवर बल समाधान।

Xnor के लिए 1 बाइट का धन्यवाद सहेजा गया

f n=[(x,y)|y<-[1..],x<-[1..n],x*x*y==n]!!0

अच्छा समाधान, मुझे पसंद है कि यह कैसे उपयोग नहीं करता है modया div। मुझे लगता है कि आप y<-[1..]आलस्य के कारण कर सकते हैं ।
xnor

हाँ आप सही है। यह मेरे पहले समाधान के साथ संभव नहीं था, last[(x,y)|x<-[1..n],y<-[1..n],x*x*y==n]लेकिन अब यह काम करेगा। धन्यवाद। क्या हास्केल में आपका अपना समाधान है?
डेमियन


1

पायथन, 74 बाइट्स

def e(k):a=filter(lambda x:k/x**2*x*x==k,range(k,0,-1))[0];return a,k/a**2

एकदम सीधा।


0

पायथन 2.7 (अनगॉल्फ्ड) - 181 बाइट्स

def e(n):   
 for x in range(1,n+1):
  r=(1,x)
  for i in range(1,x+1):
   l=i**.5
   for j in range(1,x+1): 
    if i*j==x and l%1==0 and j<r[1]:r=(int(l),j)                
  print x,r

निम्नानुसार चलाएँ: e (संख्या) उदा। ई (24)

नमूना उत्पादन:

>> e(24)
1 (1, 1)
2 (1, 2)
3 (1, 3)
4 (2, 1)
5 (1, 5)
6 (1, 6)
7 (1, 7)
8 (2, 2)
9 (3, 1)
10 (1, 10)
11 (1, 11)
12 (2, 3)
13 (1, 13)
14 (1, 14)
15 (1, 15)
16 (4, 1)
17 (1, 17)
18 (3, 2)
19 (1, 19)
20 (2, 5)
21 (1, 21)
22 (1, 22)
23 (1, 23)
24 (2, 6)

1
कृपया अपने उत्तर को जितना संभव हो सके उतना गोल्फ करने का प्रयास करें, यह एक कोड-गोल्फ है
caird coinheringaahing

0

एपीएल, 25 चरस

 {(⊢,⍵÷×⍨)1+⍵-0⍳⍨⌽⍵|⍨×⍨⍳⍵}

अंग्रेजी में:

  • 0⍳⍨⌽⍵|⍨×⍨⍳⍵: पूरी तरह से एन को विभाजित करने वाले वर्गों में से सबसे बड़े वर्गों का सूचकांक;
  • 1+⍵-: इंडेक्स उलट सरणी में है, इसलिए इंडेक्स को समायोजित करें
  • (⊢,⍵÷×⍨): परिणाम का उत्पादन करें: सूचकांक ही (ए) और भागफल बी (यानी, n ÷ a * a)

परीक्षा:

     ↑{(⊢,⍵÷×⍨)⊃z/⍨0=⍵|⍨×⍨z←⌽⍳⍵}¨⍳36
1  1
1  2
1  3
2  1
1  5
1  6
1  7
2  2
3  1
1 10
1 11
2  3
1 13
1 14
1 15
4  1
1 17
3  2
1 19
2  5
1 21
1 22
1 23
2  6
5  1
1 26
3  3
2  7
1 29
1 30
1 31
4  2
1 33
1 34
1 35
6  1

0

जावास्क्रिप्ट (ECMAScript 6), 35 बाइट्स

f=(n,k=n)=>n/k%k?f(n,--k):[k,n/k/k]

जावास्क्रिप्ट 1+, 37 बी

for(k=n=prompt();n/k%k;--k);[k,n/k/k]

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