कंस्ट्रक्टेबल n-gons


10

एक रचनात्मक n-gon एक नियमित बहुभुज है जिसमें n भुजाएँ होती हैं जिन्हें आप केवल एक कम्पास और एक अचिह्नित शासक के साथ निर्मित कर सकते हैं।

गॉस, केवल n जिसके लिए एक n-gon constructible है द्वारा कहा गया है (यानी। अलग फर्मेट अभाज्य संख्या के किसी भी संख्या और 2 के एक शक्ति का एक उत्पाद है n = 2^k * p1 * p2 * ...के साथ kएक पूर्णांक और हर जा रहा है pकुछ अलग फर्मेट प्रधानमंत्री)।

एक फ़र्मेट प्राइम एक अभाज्य है जिसे F (n) = 2 ^ (2 ^ n) +1 व्हिट ना पॉजिटिव पूर्णांक के रूप में व्यक्त किया जा सकता है। एकमात्र ज्ञात फ़र्मेट प्राइम 0, 1, 2, 3 और 4 के लिए हैं।

चुनौती

पूर्णांक को देखते हुए n>2, कहें कि n-gon रचनात्मक है या नहीं।

विशिष्टता

आपके कार्यक्रम या फ़ंक्शन को पूर्णांक या एक स्ट्रिंग का प्रतिनिधित्व करना चाहिए जिसमें कहा गया है कि पूर्णांक (या तो एकात्मक, द्विआधारी, दशमलव या किसी अन्य आधार में) और एक सत्य या मिथ्या मूल्य वापस लौटाएं या प्रिंट करें।

यह कोड-गोल्फ है, इसलिए कम से कम उत्तर जीतता है, मानक कमियां लागू होती हैं।

प्रासंगिक OEIS

उदाहरण

3 -> True
9 -> False
17 -> True
1024 -> True
65537 -> True
67109888 -> True
67109889 -> False

जवाबों:


8

जेली , 7 5 बाइट्स

2 बाइट बचाने के लिए Sp3000 के लिए धन्यवाद।

ÆṪBSỊ

निम्नलिखित वर्गीकरण का उपयोग करता है:

ये भी संख्याएँ हैं जिनके लिए phi (n) 2 की शक्ति है।

कहाँ फ़ाई है यूलर totient समारोह

ÆṪ        # Compute φ(n).
  B       # Convert to binary.
   S      # Sum bits.
    Ị     # Check whether it's less than or equal to 1. This can only be the
          # case if the binary representation was of the form [1 0 0 ... 0], i.e. 
          e# a power of 2.

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

वैकल्पिक रूप से (xnor के लिए क्रेडिट):

ÆṪ’BP
ÆṪ        # Compute φ(n).
  ’       # Decrement.
   B      # Convert to binary.
    P     # Product. This is 1 iff all bits in the binary representation are
          # 1, which means that φ(n) is a power of 2.

मेरे गणितज्ञ उत्तर का एक सीधा पोर्ट दो बाइट्स लंबा है:

ÆṪ        # Compute φ(n).
  µ       # Start a new monadic chain, to apply to φ(n).
   ÆṪ     # Compute φ(φ(n)).
      H   # Compute φ(n)/2.
     =    # Check for equality.

मुझे जैली का पता नहीं है, लेकिन क्या आप शायद फैक्टरिंग करके 2 की पावर चेक कर सकते हैं और चेक कर सकते हैं कि क्या अधिकतम 2 है? आप यह भी देख सकते हैं कि और यह और अपने पूर्ववर्ती की बिटवाइज़ 0. है
XNOR

@ एक्सनोर एचएम, अच्छा विचार है लेकिन उस पर मेरे प्रयास समान लंबाई हैं। अगर यह जांचने का कोई तरीका है कि कोई सूची 3 बाइट्स से कम की लंबाई 1 की है, तो यह कम होगा (हालांकि फंक्शनलेशन फ़ंक्शन का उपयोग करके जो सिर्फ एक्सप्लर्स की सूची देता है)। हालांकि मुझे ऐसा करने का कोई तरीका नहीं मिल रहा है।
मार्टिन एंडर

मुझे लगता है कि अगर सूची के सभी तत्व समान हैं, तो यह देखने के लिए ई है। क्या होगा यदि आप संख्या को दोगुना करते हैं, इसे कारक बनाते हैं, और जांचें कि क्या सभी कारक समान हैं?
xnor

@xnor यह भी एक अच्छा विचार है। :) यह शायद 6 बाइट्स होगा, लेकिन Sp3000 ने बताया कि वहाँ है Bऔर जो मुझे इसे 5 में परीक्षण करते हैं
मार्टिन एंडर

बहुत सुंदर। कोई भी मौका जो घटता है, फिर बाइनरी, फिर उत्पाद छोटा होता है?
xnor

3

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

e=EulerPhi
e@e@#==e@#/2&

OEIS से निम्नलिखित वर्गीकरण का उपयोग करता है:

संख्या के रूप में गणना करने योग्य, जैसे कि खाट-ऑफ-टोटिएंट, टोटिएंट-ऑफ-टोटिएंट के बराबर होता है।

Totient φ(x) एक पूर्णांक के xनीचे धनात्मक पूर्णांक की संख्या है xकि करने के लिए coprime हैं x। कोटेटिव पॉजिटिव पूर्णांकों की संख्या है, जो नहीं हैं, अर्थात x-φ(x)। यदि कुलपति के बराबर योग है, तो इसका मतलब है कि कुलदेवता φ(x) == x/2

जितना सीधा वर्गीकरण

ये भी संख्याएँ हैं जिनके लिए phi (n) 2 की शक्ति है।

अब बाइट होने पर समाप्त होता है:

IntegerQ@Log2@EulerPhi@#&

खाट और टोटके क्या हैं? और cototient-of-totients और totient-of-totients अनुपात हैं?
clismique

@ Qwerp-Derp की totient nपूर्णांकों नीचे की संख्या है nकि करने के लिए coprime हैं n, और cototient नीचे पूर्णांकों की संख्या है nकि नहीं कर रहे हैं। मैं एक लिंक में संपादित करूँगा।
मार्टिन एंडर

मैथेमेटिका का अंतर्निहित मुझे विस्मित करने के लिए कभी भी नहीं रुकेगा
सीफा

@ Qwerp-Derp अपने दूसरे प्रश्न के लिए इसका अर्थ है कि आप कुलदेवता के कुल (सह) योग की गणना करते हैं n
मार्टिन एंडर

3

रेटिना, 51 50 बाइट्स

0+$

+`^(.*)(?=(.{16}|.{8}|....|..?)$)0*\1$
$1
^1$

इनपुट बाइनरी में है। पहली दो पंक्तियों को दो की शक्ति से विभाजित करते हैं, अगले दो को सभी ज्ञात फ़र्मैट प्राइम से विभाजित करते हैं (यदि वास्तव में संख्या फ़र्मैट प्राइम का एक उत्पाद है)। संपादित करें: @Martin Ender End के लिए 1 बाइट धन्यवाद सहेजा गया।


बाइनरी इनपुट ठीक है, साथ ही फ़र्मैट प्राइम्स के बारे में धारणा
सीफा

2

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

n=>[...Array(5)].map((_,i)=>n%(i=2**2**i+1)?0:n/=i)&&!(n&n-1)

1

दरअसल, 6 बाइट्स

यह उत्तर मार्टिन एंडर के जेली उत्तर में xnor के एल्गोरिथ्म पर आधारित है । गोल्फ सुझाव का स्वागत करते हैं। इसे ऑनलाइन आज़माएं!

▒D├♂≈π

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

         Implicit input n.
▒        totient(n)
 D       Decrement.
  ├      Convert to binary (as string).
   ♂≈    Convert each char into an int.
     π   Take the product of those binary digits.
         If the result is 1,
           then bin(totient(n) - 1) is a string of 1s, and totient(n) is power of two.

0

बैच, 97 बाइट्स

@set/pn=
@for /l %%a in (4,-1,0)do @set/a"p=1<<(1<<%%a),n/=p*!(n%%-~p)+1"
@cmd/cset/a"!(n-1&n)"

इनपुट दशमलव में स्टड पर है। यह वास्तव में 2 पुनरावृत्तियों की शक्तियों की गणना से 1 बाइट कम है। मैंने @ xnor की 2 जांच की शक्ति का उपयोग करके 1 बाइट को बचाया।

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