सुंदर चिकनी चाल


18

अंकगणित में, एक n- चिकनी संख्या , जहां n एक दिया गया अभाज्य संख्या है, गणितीय रूप से एक सकारात्मक पूर्णांक के रूप में परिभाषित किया गया है जिसमें n से अधिक कोई प्रमुख कारक नहीं है। उदाहरण के लिए, 42 7-सुचारू है क्योंकि इसके सभी प्रमुख कारक 7 से कम या बराबर हैं, लेकिन 44 7-सुचारू नहीं है क्योंकि इसमें 11 भी एक प्रमुख कारक है।

अपने वर्गमूल से अधिक प्रमुख कारकों के साथ एक संख्या के रूप में एक सुंदर चिकनी संख्या को परिभाषित करें इस प्रकार, सुंदर चिकनी संख्याओं की सूची निम्नानुसार बनाई जा सकती है:

  • (EDITED!) 1 किसी भी प्रमुख कारकों की पूरी कमी के कारण, एक बहुत ही चिकनी संख्या है। (ध्यान दें कि इस प्रश्न के मूल संस्करण में, 1 को गलती से सूची से बाहर रखा गया था, इसलिए यदि आप इसे अपने आउटपुट से बाहर करते हैं तो आप गलत नहीं होंगे।)
  • 4 (= 2 2) के बीच ) और 8 के बीच, सुंदर चिकनी संख्याएं 2-चिकनी होती हैं, जिसका अर्थ है कि उनके 2 केवल प्रमुख कारक हैं।
  • 9 (= 3 2 ) और 24 के बीच, सुंदर चिकनी संख्या 3-चिकनी है, और उनके मुख्य कारकों में 2s और 3s हो सकते हैं।
  • 25 (= 5 2 ) और 48 के बीच, सुंदर चिकनी संख्या 5-चिकनी है, और उनके मुख्य कारकों में 2s, 3s और 5s हो सकते हैं।
  • और इसी तरह, हर बार अगले प्रमुख संख्या के वर्ग तक मापदंड को अपग्रेड किया जाता है।

सुंदर चिकनी संख्याओं की सूची निर्धारित है, और निम्नानुसार शुरू होती है: 1, 4, 8, 9, 12, 16, 18, 24, 25, ...

आपकी चुनौती कोड लिखने की है जो 10,000 (= 100 2 ) सहित सभी सुंदर चिकनी संख्याओं को आउटपुट करेगी । सूची में प्रत्येक संख्या और अगले के बीच कम से कम एक विभाजक होना चाहिए (इससे कोई फर्क नहीं पड़ता कि किस तरह का स्थान - अल्पविराम, नई रेखा, कुछ भी हो), लेकिन यह पूरी तरह से अप्रासंगिक है कि किस वर्ण का उपयोग किया जाता है।

हमेशा की तरह, सबसे कम बाइट गिनती जीतती है - जाहिर है, बस सूची का उत्पादन करना आपके लिए यहां बहुत फायदेमंद नहीं होगा। सौभाग्य!


9
क्यों 1 बहुत चिकनी नहीं है?
डेनिस

क्या हम सूची को रिवर्स ऑर्डर में आउटपुट कर सकते हैं?
लीक नून

5
OEIS A048098 (अतिरिक्त शामिल है 1)
Nun

1
@Mego "4 से कम कोई बहुत चिकनी संख्या नहीं है।" बहुत स्पष्ट है। जरूरी नहीं कि स्पष्ट हो, लेकिन निश्चित रूप से स्पष्ट।
विराटपुर

1
@viraptor के रूप में यह स्पष्ट नहीं है के रूप में मतदान किया है क्योंकि यह नहीं कहा गया था कि 1 चिकनी नहीं है, लेकिन क्योंकि आपकी परिभाषा और आपके बहिष्करण कथन एक-दूसरे के विपरीत हैं।
लीक नून

जवाबों:



7

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

Æf>½S
³²ḊÇÐḟ

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

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

³²ḊÇÐḟ  Main link. No arguments.

³       Yield 100.
 ²      Square it to yield 10,000.
  Ḋ     Dequeue; yield [2, ..., 10,000].
   ÇÐḟ  Filter-false; keep elements for which the helper link returns 0.

Æf>½S   Helper link. Argument: n

Æf      Compute the prime factorization of n.
  >½    Compare the prime factors with the square root of n.
    S   Sum; add the resulting Booleans.

7

ब्रेकीलॉग , 21 19 बाइट्स

1 बाइट के लिए धन्यवाद, दूसरे 1 बाइट की प्रेरणा के लिए।

100^:4reP$ph^<=P@w\

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

यहां लगभग 6 सेकंड लगते हैं।

100^:4reP$ph^<=P@w\
100                      100
   ^                     squared
    :4                   [10000,4]
      r                  [4,10000]
       eP                P is an integer in that interval (choice point),
        P$ph^<=P         P, prime factorized (from biggest to smallest),
                         take the first element, squared, is less than
                         or equal to P
               P@w       Write P with a newline,
                  \      Backtrack to the last choice point and make
                         a different choice until there is no more
                         choice and the program halts.

पिछला 21-बाइट समाधान

100^:4reP'($pe^>P)@w\

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

यहां लगभग 6 सेकंड लगते हैं।

100^:4reP'($pe^>P)@w\
100                      100
   ^                     squared
    :4                   [10000,4]
      r                  [4,10000]
       eP                P is an integer in that interval (choice point),
        P'(      )       The following about P cannot be proved:
           $pe               one of its prime factor
              ^              squared
               >P            is greater than P
                  @w     Write P with a newline,
                    \    Backtrack to the last choice point and make
                         a different choice until there is no more
                         choice and the program halts.

100^:4reP$pot^<=P@w\एक बाइट कम है, हालांकि कम सुरुचिपूर्ण है।
घातक

@ फ़ेटलाइज़ थैंक्स, मैंने एक और बाइट को हासिल किया
लीकी नून

4

हास्केल, 53 बाइट्स

r=[1..10^4]
[n|n<-r,product[x|x<-r,x*x<=n]^n`mod`n<1]

मैं गोल्फ के लिए समय नहीं है यह अब है, लेकिन मैं के परीक्षण के लिए एक विधि का वर्णन करना चाहते हैं तो nसुंदर है चिकनी: गुणा से संख्या 1के लिए sqrt(n)(यानी गणना एक भाज्य), एक उच्च शक्ति के लिए उत्पाद बढ़ा है, और परिणाम है, तो जाँच का एक बहु है n

r=[2..10^4]अगर 1आउटपुट नहीं होना चाहिए तो बदलें ।


ऐसा नहीं है कि यह किसी भी गोल्फ खिलाड़ी है, लेकिन मुझे पूरा यकीन है कि घन पर्याप्त है (इसकी 8आवश्यकता है)।
नील

2

पायथ , 16 15 बाइट्स

1 बाइट जेक्यूब के लिए धन्यवाद।

tf!f>*YYTPTS^T4

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

tf!f>*YYTPTS^T4
             T   10
            ^T4  10000
           S^T4  [1,2,3,...,10000]
 f               filter for elements as T for
                 which the following is truthy: 
         PT          prime factorization of T
   f                 filter for factor as Y:
     *YY                 Y*Y
    >   T                greater than T ?
  !                  logical negation
t                remove the first one (1)

निश्चित रूप से अजगर का एक चौकोर कार्य है? तो आप *dd उस फ़ंक्शन से बदल सकते हैं ?
कॉनर ओ'ब्रायन

@ कॉनोर'ब्रायन नोप, पाइथ का एक स्क्वायर फंक्शन नहीं है।
लीक

ऐसा लगता है कि एक तरह की तरह है
कॉनर ओ'ब्रायन

2

05AB1E, 16 14 13 बाइट्स

4°L¦vyf¤yt›_—

व्याख्या

4°L¦v             # for each y in range 2..10000
      yf¤         # largest prime factor of y
         yt       # square root of y
           ›_     # less than or equal
             —    # if true then print y with newline

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


10000 के लिए छोटा है।
अदनान

@ अदनान धन्यवाद! उस एक के बारे में भूल गए।
Emigna

2

मतलाब, 58 57 56 52 48 बाइट्स

for k=1:1e4
if factor(k).^2<=k
disp‌​(k)
end
end

प्रत्येक संख्या के लिए यह जाँचता है कि क्या सभी कारक वर्ग संख्या से बड़े नहीं हैं। यदि हाँ, तो वह संख्या प्रदर्शित करता है।

इस दृष्टिकोण को आगे बढ़ाने के लिए @Luis मेंडो को धन्यवाद


एक और दृष्टिकोण (50 बाइट्स):

n=1:10^4;for k=n
z(k)=max(factor(k))^2>k;end
n(~z)

प्रत्येक संख्या के लिए गणना करता है कि क्या इसका अधिकतम अभाज्य गुणांक संख्या से कम है। फिर इसका उपयोग अनुक्रमण के लिए करता है।


1
आपके पिछले दृष्टिकोण को कम किया जा सकता है:for k=4:1e4,if factor(k).^2<=k,disp(k);end;end
लुइस मेंडो

1

एसक्यूएफ , 252 227 220

मानक स्क्रिप्ट प्रारूप:

#define Q(A,B) for #A from 2 to B do{
Q(i,10000)if([i]call{params["j"];u=sqrt j;a=true;Q(k,u)a=a and((j%k!=0)or(j/k<u)or!([j/k]call{params["x"];q=true;Q(z,sqrt x)q=q and(x%z!=0)};q}))};a})then{systemChat format["%1",i]}}

कॉल करते समय संकलन श्रृंखला में पूर्व-प्रोसेसर को शामिल करें:

  • execVM "FILENAME.sqf"
  • call compile preprocessFile "FILENAME.sqf"

यह सिस्टम चैट लॉग को लिखता है, जो कि एसक्यूएफ की सबसे करीबी चीज है जिसे स्टडआउट करना है



1

पाइके, 13 12 11 बाइट्स

T4^S#DP#X<!

यहाँ कोशिश करो!

(लिंक केवल 10 ^ 3 तक जाता है क्योंकि 10 ^ 4 बार बाहर)

T4^S        -  one_range(10^4)
    #DP#X<! - filter_true(V, ^): (as i)
      P     -   factors(i)
       #X<! -  filter_true(V, ^):
        X   -   ^ ** 2
         <! -    not (i < ^)



0

आर, 97 बाइट्स

b=F;for(j in 1:1e4){for(i in which(!j%%1:j)[-1])if(which(!i%%1:i)[2]==i)b=i<=j^0.5;if(b)print(j)}

ungolfed

b <- F                               #Initializes
for (j in 1:1e4){                    #Loop across integers 1..10^4
    a <- which(!j%%1:j)[-1]          #Finds all factors
    for (i in a)                     #Loop across factors
         b <- which(!i%%1:i)[2]==i   #Tests primeness
         if(b) c <- i<=j^0.5         #If prime, tests smoothness
    if(c) print(j)                   #If biggest prime factor gives smooth
}                                    #result, Prints the number.

0

पायथ, 12 बाइट्स

g#^ePT2tS^T4

1 शामिल नहीं है।

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