एन-वें सही शक्ति का पता लगाएं!


16

एक आदर्श शक्ति एक रूप है a**b, जहां a>0और b>1

उदाहरण के लिए, 125एक आदर्श शक्ति है क्योंकि इसे व्यक्त किया जा सकता है 5**3

लक्ष्य

आपका कार्य एक प्रोग्राम / फ़ंक्शन लिखना है जो nएक पूर्णांक देता है, जो कि सही शक्ति पाता है n

ऐनक

  • पहली पूर्ण शक्ति है 1(जो है 1**2)।
  • किसी भी उचित प्रारूप में इनपुट / आउटपुट।
  • बिल्ट-इन की अनुमति है

अग्रिम जानकारी

स्कोरिंग

यह । बाइट्स जीत में सबसे कम समाधान।

परीक्षण के मामलों

input  output
1      1
2      4
3      8
4      9
5      16
6      25
7      27
8      32
9      36
10     49

1
यह काम किस नंबर पर होगा? इन्फिनिटी?
भूत_न_थे_कोड

एक उचित राशि।
लीक नून

उस भाषा के बारे में क्या जो केवल एक बिट के डेटा प्रकार का उपयोग करती है?
ghosts_in_the_code

1
@ Agawa001 हाँ यह एक मानक खामिया है जो अब मज़ेदार नहीं हैं।
दोष

जवाबों:


8

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

µÆE;¬g/’µ#Ṫ

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

पृष्ठभूमि

प्रत्येक सकारात्मक पूर्णांक k को पहले m primes की शक्तियों के उत्पाद के रूप में विशिष्ट रूप से कारक बनाया जा सकता है , अर्थात, k = p 1 α 1 m p m α m , जहां α m > 0

हम है कि एक ( b> 1 ) पूर्णांक कुछ सकारात्मक के लिए एक यदि और केवल यदि सभी घातांक का एक भाजक है α जे

इस प्रकार, एक पूर्णांक k> 1 एक पूर्ण शक्ति है यदि और केवल अगर gcd (α 1 , ⋯, α m ) k 1

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

µÆE;¬g/’µ#Ṫ  Main link. No arguments.

µ            Make the chain monadic, setting the left argument to 0.
        µ#   Find the first n integers k, greater or equal to 0, for which the
             preceding chain returns a truthy value.
             In the absence of CLAs, n is read implicitly from STDIN.
 ÆE          Compute the exponents of the prime factorization of k.
   ;¬        Append the logical NOT of k, i.e., 0 if k > 0 and 1 otherwise.
             This maps 1 -> [0] and [0] -> [1].
     g/      Reduce the list of exponents by GCD.
             In particular, we achieved that 1 -> 0 and 0 -> 1.
       ’     Decrement; subtract 1 from the GCD.
             This maps 1 to 0 (falsy) and all other integers to a truthy value.
          Ṫ  Tail; extract the last k.

मैंने STDIN बिल्कुल नहीं देखा है। मुझे नहीं पता कि इसका उपयोग कैसे करना है।
लीक से

सही शक्ति की परिभाषा का अच्छा उपयोग प्रधान कारक के साथ करना है। क्या आप वर्णन में इस एल्गोरिथ्म को शामिल कर सकते हैं?
लीक नून

@ केनीलाऊ ने किया।
डेनिस

मुझे समझ नहीं आ रहा है कि 21 ^ 2 में पहले या तीसरे प्रमुख को इसके कारक में कैसे शामिल किया जाए। क्या आप मुझे यह समझने में मदद कर सकते हैं कि आपके द्वारा "हर धनात्मक पूर्णांक k को पहले m primes की शक्तियों के गुणनफल के रूप में विशिष्ट रूप से कारक बनाया जा सकता है ... जहाँ [घातांक] a_n > 0?" यह मुझे 21 ^ 2 के लिए कारक में लगता है p = 2 और p = 5 के लिए घातांक शून्य हैं।
לעג ברקן

@ Thatלעגברקן क्षमा करें, यह a_m> 0 होना चाहिए था । पिछले एम -1 एक्सपोर्टर में जीरो शामिल हो सकते हैं।
डेनिस

6

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

(Union@@Array[#^#2#&,{#,#}])[[#]]&

एक n × n सरणी उत्पन्न करता है A ij = i 1+ j , इसे समतल करता है, और n th तत्व देता है।


3

सीजेएम, 16 बाइट्स

ri_),_2f+ff#:|$=

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

व्याख्या

यह LegionMammal के Mathematica उत्तर के समान विचार का उपयोग करता है।

ri    e# Read input and convert to integer N.
_),   e# Duplicate, increment and turn into range [0 1 ... N].
_2f+  e# Duplicate and add two to each element to get [2 3 ... N+2].
ff#   e# Compute the outer product between both lists over exponentiation.
      e# This gives a bunch of perfect powers a^b for a ≥ 0, b > 1.
:|    e# Fold set union over the list, getting all unique powers generated this way.
$     e# Sort them.
=     e# Retrieve the N+1'th power (because input is 1-based, but CJam's array access
      e# is 0-based, which is why we included 0 in the list of perfect powers.

3

ऑक्टेव, 57 31 30 बाइट्स

@(n)unique((1:n)'.^(2:n+1))(n)

मैंने बस फिर से गौर किया कि ऑक्टेव की जरूरत नहीं है ndgrid(जबकि माटलाब करता है) =)



3

ऋषि (संस्करण 6.4, शायद अन्य भी): 64 63

lambda n:[k for k in range(1+n^2)if(0+k).is_perfect_power()][n]

एक लंबो फ़ंक्शन बनाता है जो nवें पूर्ण शक्ति देता है। हम इस तथ्य पर भरोसा करते हैं कि यह पहले n^2पूर्णांक के भीतर पाया जाता है । (के 1+n^2लिए आवश्यक है n=1,20+kबिट में परिवर्तित int(k)करने के लिए आवश्यक है Integer(k)।)

बाइट के लिए बंद xrange-> range, धन्यवाद डेनिस।

बस एक मजेदार तथ्य: 0ऋषि के मानकों द्वारा एक आदर्श शक्ति है, सौभाग्य से, क्योंकि तब 1सूची का 1 तत्व है, न कि 0% :)


तो यह प्राइम पावर पार्ट को छोड़कर पायथन है?
कैलक्यूलेटरफल

@CatsAreFluffy औरis_perfect_power()
यो '

2

पायथ - 12 11 बाइट्स

स्पष्ट दृष्टिकोण, बस सभी नंबरों से गुजरता है और जांचता है।

e.ffsI@ZTr2

टेस्ट सूट



1

जूलिया, 64 32 बाइट्स

n->sort(∪([1:n]'.^[2:n+1]))[n]

यह एक अनाम फ़ंक्शन है जो पूर्णांक को स्वीकार करता है और पूर्णांक देता है। इसे कॉल करने के लिए, इसे एक वैरिएबल पर असाइन करें।

विचार यहाँ LegionMammal के मेथेमेटिका में रूप में ही है इस सवाल का जवाब : हम करने के लिए पूर्णांकों 1 के बाहरी उत्पाद लेने के एन 2 के साथ n + 1, परिणामस्वरूप मैट्रिक्स पतन स्तंभ के लिहाज से, तरह अद्वितीय तत्व ले, और मिल n वें तत्व ।

इसे ऑनलाइन आज़माएं! (सभी परीक्षण मामले शामिल हैं)


1

जावास्क्रिप्ट (ईएस 6), 87

n=>(b=>{for(l=[i=0,1];b<n*n;++b)for(v=b;v<n*n;)l[v*=b]=v;l.some(x=>n==i++?v=x:0)})(2)|v

कम गोल्फ वाला

f=n=>{
  for(b=2, l=[0,1]; b < n*n; ++b)
    for(v = b; v < n*n;)
      l[v*=b] = v;
  i = 0;
  l.some(x => n == i++ ? v=x : 0);
  return v;
  // shorter alternative, but too much memory used even for small inputs
  // return l.filter(x=>x) [n-1];
}

परीक्षा

f=n=>(b=>{for(l=[i=0,1];b<n*n;++b)for(v=b;v<n*n;)l[v*=b]=v;l.some(x=>n==i++?v=x:0)})(2)|v

function test(){
  var v=+I.value
  O.textContent=f(v)
}
  
test()
<input type=number id=I value=10><button onclick='test()'>-></button>
<span id=O></span>


1

दरअसल, 18 बाइट्स (गैर-प्रतिस्पर्धात्मक)

;;u@ⁿr;`;√≈²=`M@░E

इसे ऑनलाइन आज़माएं! (अद्यतन की आवश्यकता के कारण काम नहीं हो सकता है)

यह समाधान गैर-प्रतिस्पर्धात्मक है क्योंकि मैंने Eइस चुनौती को पोस्ट करने के बाद बग को ठीक किया था।

स्पष्टीकरण:

;;u@ⁿr;`;√≈²=`M@░E
;;u@ⁿr              push range(n**(n+1))
      ;`;√≈²=`M@░   filter: take if
        ;√≈²=         int(sqrt(x))**2 == x
                 E  get nth element

1

> <>, 108 बाइट्स

:1)?v  >n;
$:@@\&31+2>2$:@@:@
:1=?\@$:@*@@1-
:~$~<.1b+1v!?(}:{:~~v?(}:{:v?=}:{
1-:&1=?v~~>~61.     >~1+b1.>&

इस प्रोग्राम को चलाने से पहले स्टैक पर मौजूद इनपुट नंबर की आवश्यकता होती है।

7 से नीचे व्यर्थ बाइट्स की संख्या को कम करने के लिए यह काफी समय लगा!

यह देखने के लिए कि क्या इनपुट है 1, प्रोग्राम के बाद, प्रोग्राम प्रत्येक नंबर की जांच करता है n, 4 से बारी-बारी से यह देखने के लिए कि क्या यह एक संपूर्ण शक्ति है। के साथ शुरू करके यह करता है a=b=2। अगरa^b == n , हमें एक सही शक्ति मिल गई है, तो खोजने के लिए बची हुई सही शक्तियों की संख्या में कमी - यदि हमने पहले ही सही संख्या, आउटपुट पाया है।

अगर a^b < n, bबढ़ा हुआ है। अगर a^b > n, aबढ़ा हुआ है। फिर, अगर a == n, हमने पाया है कि nएक संपूर्ण शक्ति नहीं है, तो वेतन वृद्धि n, रीसेटिंग aऔर b


0

जे, 29 बाइट्स

@ LegionMammal978 की विधि के आधार पर ।

<:{[:/:~@~.[:,/[:(^/>:)~>:@i.

प्रयोग

   f =: <:{[:/:~@~.[:,/[:(^/>:)~>:@i.
   f " 0 (1 2 3 4 5 6 7 8 9 10)
1 4 8 9 16 25 27 32 36 49

व्याख्या

<:{[:/:~@~.[:,/[:(^/>:)~>:@i.
                           i.  Create range from 0 to n-1
                        >:     Increments each in that range, now is 1 to n
               [:              Cap, Ignores input n
                    >:         New range, increment from previous range to be 2 to n+1 now
                  ^/           Forms table using exponentation between 1..n and 2..n+1
             ,/                Flattens table to a list
         ~.                    Takes only distinct items
     /:~                       Sorts the list
<:                             Decrements the input n (since list is zero-based index)
  {                            Selects value from resulting list at index n-1

0

जावास्क्रिप्ट (ईएस 7), 104 बाइट्स

n=>(a=[...Array(n)]).map(_=>a.every(_=>(p=i**++j)>n*n?0:r[p]=p,i+=j=1),r=[i=1])&&r.sort((a,b)=>a-b)[n-1]

सभी शक्तियों की गणना n² से अधिक नहीं है, परिणामी सूची को छाँटकर और nth तत्व को ले कर काम करता है।


0

जावा, 126

r->{int n,i,k;if(r==1)return r;for(n=i=2,r--;;){for(k=i*i;k<=n;k*=i)if(k==n){i=--r>0?++n:n;if(r<1)return n;}if(--i<2)i=++n;}}

क्या पुनरावृत्ति का उपयोग करना कम होगा?
लीक नून

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