प्रमुख कारकों से प्राप्त पूर्णांक अनुक्रम की गणना करें


10

एक फ़ंक्शन, एक्सप्रेशन या प्रोग्राम बनाएँ जो निम्न कार्य करता है:

  1. किसी भी संख्या के प्रमुख कारकों को लें और उन्हें योग करें। उदाहरण के लिए, 28 के प्रमुख कारक 2 2 7 हैं, जिन्हें 11 में सम्‍मिलित किया गया है।
  2. दिए गए संख्या के लिए मुख्य कारकों की संख्या से परिणाम गुणा करें। जैसे, २ में ३ प्रधान कारक हैं जो ११ से ११ * ३ ३३ है।
  3. जब तक आप सूची में पहले से ही शामिल संख्या तक नहीं पहुंच जाते, परिणामी सूची (जो मूल संख्या के साथ शुरू होती है) को संग्रहीत करते हुए, पुनरावृत्ति की प्रक्रिया को दोहराएं। उस अंतिम संख्या को जोड़े बिना हॉल्ट, ताकि सूची में कोई डुप्लिकेट न हो। 28 के लिए प्रगति 28 33 है, क्योंकि 33 परिणाम 28 में फिर से।
  4. परिणामी सूची में तत्वों को गिनें। 28 के मामले में, उत्तर 2 है।

यहाँ के लिए परिणाम हैं 0<n<=10, तो आप अपने एल्गोरिथ्म की जाँच कर सकते हैं।

2 1 1 10 1 11 1 9 5 10

(जैसा कि बाल्हा ने बताया, higley(1)सूची 1 से 2 का उत्तर है। जे में लिखे गए मेरे मूल एल्गोरिथ्म में एक बग के कारण 1 मूल रूप से मेरे पास 1 था।)

चूँकि मैं एक कल्पित SOB हूँ और इसे OEIS पर नहीं मिला है , इसलिए इसे कम से कम कोड गोल्फ के इस दौर की अवधि के लिए "Higley Sequence" कहें। अतिरिक्त बोनस के रूप में, पहले दो nको सबसे कम ज्ञात कीजिए higley(n)जहां nअभाज्य नहीं है और n>1। (मुझे लगता है कि केवल दो हैं, लेकिन मैं इसे साबित नहीं कर सकता।)

यह मानक कोड गोल्फ है, इसलिए हमेशा की तरह सबसे कम कीस्ट्रोक्स जीतते हैं, लेकिन मैं पूछता हूं कि आप अन्य भाषाओं में चतुर उत्तर दें, भले ही वे क्रियात्मक हों।


4
क्यों है highley(1) == 1? किसी के पास कोई प्रमुख कारक नहीं है, इसलिए 4 में परिणामी सूची) है [1, 0], इसलिए highley(1) == 2जैसा कि मैं इसे देखता हूं।
बाल्फा

क्या हम मान सकते हैं कि इनपुट संख्या और मध्यवर्ती मान 2 ^ 31-1 से अधिक नहीं होंगे (यानी हस्ताक्षरित 32-बिट पूर्णांक में फिट होंगे)?
पीटर टेलर

@ अभिनेता टेलर श्योर।
ग्रेगरी हिगले

यदि किसी को यह मददगार लगता है, तो OEIS क्रम जो अस्पष्ट रूप से संबंधित हैं और कुछ प्रेरणा प्रदान कर सकते हैं A001414, A001222, और A002217 हैं।
पीटर टेलर

1
चूँकि आपने टिप्पणी नहीं की है, मुझे लगता है कि आपने ध्यान नहीं दिया है: मैंने साबित किया कि केवल दो गैर-प्राइम फ़िक्सप्वाइंट हैं और इसे अपने पोस्ट में परिशिष्ट के रूप में जोड़ा है।
पीटर टेलर

जवाबों:


6

जम्मू, 47 45

#@((~.@,[:(+/@{:*+/@:*/)2 p:{:)^:_)`2:@.(=&1)

यह संभव है कि यह उपयोग किए बिना बहुत कम होगा ^:_, लेकिन मेरा मस्तिष्क पहले से ही पर्याप्त रूप से तला हुआ है।

संपादित करें: (47-> 45) डबल कूपन दिन।

उपयोग:

   higley =: #@((~.@,(+/@{:*+/@:*/)@(2&p:)@{:)^:_)`2:@.(=&1)
   higley 1
2
   higley"0 (1 + i. 10)
2 1 1 10 1 11 1 9 5 10

वाह! ए जे समाधान जो एक गोल्फस्क्रिप्ट समाधान से छोटा है। पहले मैंने देखा है। (मैं जे का बहुत बड़ा प्रशंसक हूं)
ग्रेगरी हिगली

3
आप थोड़े अलग एल्गोरिथ्म का उपयोग करके इसे काफी छोटा कर सकते हैं: #@((~.@,((+/*#)@:q:)@{:)^:_)`2:@.(=&1)जो कि 38 अक्षर है।
ग्रेगरी हिगले

वाह, मैंने यह पता लगाने की कोशिश की कि इसे q के साथ कैसे किया जाए: लेकिन मैं इसे अपने 2 पी: समाधान में बदलने की कोशिश कर रहा था, इसलिए मुझे यह नहीं मिला। रेट्रोस्पेक्ट में स्पष्ट।
जेसी मिलिकन

तथ्य यह है कि आप पात्रों के उस विस्फोट को देख सकते हैं और इसे " रेट्रोस्पेक्ट में स्पष्ट " कह सकते हैं, बस मेरे दिमाग को उड़ा देता है। इन दिनों में से एक को मुझे गोल्फस्पर्ट या जे
केसी

@ कैसी को मैंने एक समय में एक ही तरह से महसूस किया था, लेकिन जितना अधिक आप सीखते हैं और उपयोग करते हैं, उतना ही अधिक "आप पर छलांग लगाता है", हालांकि मैं अभी भी उन चीजों को देखता हूं जिन्हें मुझे बाहर निकालना है। जे के बारे में जानने के लिए एक उपयोगी बात यह है कि यदि आप एक जोड़ते हैं। या: एक प्रतीक के बाद, यह बनाता है एक नया प्रतीक, जैसे, {, {., और {:सब मतलब अलग बातें है, लेकिन {-(उदाहरण के लिए) निश्चित रूप से दो बातों का क्रम है, {और -
ग्रेगरी हिगले

5

गोल्फस्क्रिप्ट, 68 67 62 61 वर्ण

[.]({[.2@{1$1$%{)}{\1$/1$}if}*;;].,*0+{+}*.2$?@@.@+\@)!}do;,(

यह एक अभिव्यक्ति है: यह nस्टैक पर लेता है और स्टैक पर परिणाम छोड़ता है। इसे एक प्रोग्राम में nबदलने के लिए, जो स्टडिन से लेता है और परिणाम को स्टडआउट में प्रिंट करता है, अग्रणी [को प्रतिस्थापित करता है~

इसका दिल [.2@{1$1$%{)}{\1$/1$}if}*;;](28 वर्ण) है जो स्टैक पर शीर्ष नंबर लेता है और (एक अविश्वसनीय अक्षम एल्गोरिथ्म) इसके प्रमुख कारकों की सूची तैयार करता है। सी-शैली छद्मकोड समतुल्य:

ps = [], p = 2;
for (int i = 0; i < n; i++) {
    if (n % p == 0) {
        ps += p;
        n /= p;
    }
    else p++;
}

0+बस से पहले {+}*विशेष मामले को संभालने के लिए है n==1क्योंकि Golfscript खाली सूची पर एक द्विआधारी आपरेशन तह की तरह नहीं है,।

नॉन-प्राइम फिक्स्चर में से एक 27 है; मैं मानचित्रण (पी विचार करके कार्यक्रम का उपयोग किए बिना इस पाया एक -> एक 2 पी) है, जो एक fixpoint है अगर एक == पी (क -1) / 2 , और छोटे की कोशिश कर रहा a। ( a==1primes का निर्धारण करता है)।

कार्यक्रम के साथ खोज करना एक दूसरा निर्धारण करता है: 30 = (2 + 3 + 5) * 3


परिशिष्ट: सबूत है कि केवल दो गैर-प्राइम फ़िक्सप्वाइंट हैं

संकेतन: दोहराव (A001414) के साथ, sopfr(x)के प्रमुख कारकों का योग है x। (A001222) Omega(x)के प्रमुख कारकों की संख्या है x। तो हिगली उत्तराधिकारी समारोह हैh(x) = sopfr(x) Omega(x)

मान लीजिए कि हमारे पास एक निश्चित बिंदु है N = h(N)जो कि n=Omega(N)primes का एक उत्पाद है ।

N = p_0 ... p_{n-1} = h(N) = n (p_0 + ... + p_{n-1})

मूल संख्या सिद्धांत: में nविभाजित है p_0 ... p_{n-1}, इसलिए w=Omega(n)उन अपराधों के प्रमुख कारक हैं n। Wlog हम उन्हें अंतिम होने के लिए ले जाएगा w। इसलिए हम दोनों पक्षों को विभाजित करके nप्राप्त कर सकते हैं

p_0 ... p_{n-w-1} = p_0 + ... + p_{n-1}

या

p_0 ... p_{n-w-1} = p_0 + ... + p_{n-w-1} + sopfr(n)

यह देखते हुए कि अभाज्य संख्या के सभी p_0के लिए p_{n-w-1}1 से अधिक कर रहे हैं, बढ़ रही है उनमें से किसी एलएचएस आरएचएस की तुलना में अधिक बढ़ जाती है। तो दिए गए के लिए n, हम सभी उम्मीदवार समाधानों की गणना कर सकते हैं।

विशेष रूप से, कोई समाधान नहीं हो सकता है यदि एलएचएस आरएचएस से अधिक "सभी" मुक्त करने के लिए "primes" 2 सेट करता है। यानी अगर कोई समाधान नहीं है

2^{n-w} > 2 (n-w) + sopfr(n)

चूंकि sopfr(n) <= n(केवल n = 4 या n अभाज्य के लिए समानता के साथ), हम कमजोर बयान दे सकते हैं कि कोई निर्धारण नहीं हैं यदि

2^{n-w} > 3 n - 2 w

wनिर्धारित होल्डिंग हम nसंतोषजनक के विभिन्न मूल्यों का चयन कर सकते हैं w=Omega(n)। सबसे छोटा ऐसा nहै 2^w। ध्यान दें कि यदि 2^{n-w}कम से कम 3 है (यानी यदि n-w>1, जो सच है तो n>2) तो स्थिर nरहते हुए wबढ़ने से आरएचएस से अधिक एलएचएस बढ़ेगा। यह भी ध्यान दें कि w>2सबसे छोटी और संभव nअसमानता को लेने के लिए संतुष्ट हैं, और कोई निर्धारण नहीं हैं।

वह हमें तीन मामलों में छोड़ देता है: w = 0और n = 1; w = 1और nप्रमुख है; या w = 2और nअर्द्ध प्रधानमंत्री है।

मामला w = 0n = 1, तो Nकोई भी प्रधान है।

मामला w = 1। यदि n = 2तब N = 2pऔर हमें आवश्यकता है p = p + 2, जिसका कोई समाधान नहीं है। यदि n = 3फिर हमारे पास pq = p + q + 3और दो समाधान हैं, (p=2, q=5)और (p=3, q=3)। तो n = 5फिर 2^4 > 3 * 5 - 2 * 1, इसलिए वहाँ के साथ आगे कोई समाधान कर रहे हैं w = 1

मामला w = 2। अगर है n = 4तो N = 4pqहमें चाहिए pq = p + q + 4। इसका पूर्णांक समाधान है p=2, q=6, लेकिन कोई प्रमुख समाधान नहीं है। तो n = 6फिर 2^4 > 3 * 6 - 2 * 2, इसलिए वहाँ के साथ आगे कोई समाधान कर रहे हैं w = 2

सभी मामले समाप्त हो गए हैं, इसलिए केवल गैर-प्राइम फ़िक्सप्वाइंट 27 और 30 हैं।


1
पेंसिल-एंड-पेपर: 27 और 30 का उपयोग करके उन दो समान फिक्सपॉइंट्स को मिला। मैं ओपी के साथ सहमत हूं ऐसा लगता है कि वे केवल दो हैं।
मेलमोकब

1
अगला दिलचस्प सवाल हो सकता है क्या असीम रूप से कई हिगली (x) = 2 हैं? कैसे के बारे में मनमाना higley (x) उत्पन्न करने का एक तरीका है, जैसे higley (x) = 100?
मेलमोकब

बहुत अच्छा! मैं एक जे आदमी हूं लेकिन मुझे गोल्फस्क्रिप्ट सीखना पड़ सकता है।
ग्रेगरी हिगले

@mellamokb मुझे लगता है कि इस क्रम के साथ कई दिलचस्प सवाल हैं। उदाहरण के लिए, यदि हम nगिनने से पहले प्रत्येक के लिए उत्पन्न संख्याओं के अनुक्रम पर विचार करते हैं, तो क्या n49 के बाद कोई अभाज्य है जिसके लिए कहा गया है कि अनुक्रम 28 में समाप्त नहीं होता है?
ग्रेगरी हिगले

2
एक और दिलचस्प सवाल यह है कि क्या कोई सरल कार्य है nजिसकी सीमा higley(n)ऊपर है। (यह लूप को सरल बनाने की अनुमति देगा - बस पुनरावृति f(n)समय और फिर डुप्लिकेट को छोड़ दें)।
पीटर टेलर

4

रूबी, 92 अक्षर

f=->i{r=[i];(x=s=0;(2..i).map{|j|(s+=j;x+=1;i/=j)while i%j<1};r<<i=s*x)until r.uniq!;r.size}

यह समाधान हिगली मानता है (1) वास्तव में 2 है, 1 नहीं (ऊपर बाल्हा की टिप्पणी देखें):

(1..10).map &f
=> [2, 1, 1, 10, 1, 11, 1, 9, 5, 10]

2

ऑक्टेव - 109 चार्ट

l=[input('')];while size_equal(unique(l),l);n=factor(l(1));l=[sum(n)*length(n) l];endwhile;disp(length(l)-1);

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