पुनर्खरीद के उपन्यास के प्रमुख कारक


20

पृष्ठ - भूमि

फोल्क्स चैट में मुख्य कारक बात कर रहे थे और हमने खुद को पुनर्मिलन के बारे में बात करते हुए पाया। पुनर्खरीद संख्याओं के एक सबसेट के रूप में जाना जाता है, जो कि केवल दोहराए गए अंकों से युक्त संख्याएं होती हैं, जैसे 222या 4444444444444444, लेकिन पुनर्मिलन में केवल शामिल होते हैं 1

पहले दो repunits इसलिए कर रहे हैं 1, 11, 111, आदि इन से जाने जाते हैं आर एन , तो आर 1 = 1, आर 2 = 11, आदि, और सूत्र द्वारा उत्पन्न कर रहे R(n) = (10^n - 1)/9साथ, n > 0

इन पुनर्मिलन संख्याओं का प्रधान कारक OEIS में अनुक्रम A102380 है। उदाहरण के लिए:

आर 1 = 1
आर 2 = 11
आर 3 = 111 = 3 * 37
आर 4 = 1111 = 11 * 101
आर 5 = 11111 = 41 * 271
आर 6 = 111111 = 3 * 7 * 11 * 13 * 37
आर 7 = 1111111 = 239 * 4649
...

चुनौती

एक कार्यक्रम या समारोह लिखें, जो जब एक इनपुट पूर्णांक दी n के साथ n >= 2के माध्यम से STDIN या समकक्ष , आउटपुट या रिटर्न उपन्यास के लिए प्रमुख कारकों आर एन किसी भी सुविधाजनक प्रारूप में,। "नोवल प्राइम फैक्टर्स" का मतलब यहाँ सब है xजहाँ R nx का एक मुख्य कारक है , लेकिन किसी भी पिछले R k के लिए मुख्य कारक नहीं है , (यानी, यदि हम सभी R के अनुक्रम में प्राइम कारक लिखते हैं , तो हमने नहीं देखा है। इससे पहले)।x1 <= k < nx

उदाहरण

Input: 6
Output: 7, 13
(because 3, 11, and 37 are factors of a smaller R_k)

Input: 19
Output: 1111111111111111111
(because R_19 is prime, so no other factors)

Input: 24
Output: 99990001
(because 3, 7, 11, 13, 37, 73, 101, 137, 9901 are factors of a smaller R_k)

Input: 29
Output: 3191, 16763, 43037, 62003, 77843839397
(because no factors of R_29 are also factors of a smaller R_k)

अतिरिक्त:

  • आपका कोड कुछ भी या कुछ भी कर सकता है अगर n < 2
  • आप nपरीक्षण और निष्पादन उद्देश्यों के लिए "उचित" ऊपरी सीमा मान सकते हैं - उदाहरण के लिए , आपके कोड से आउटपुट की उम्मीद नहीं की जाएगी n = 10000000, लेकिन असीमित कंप्यूटिंग शक्ति और समय दिए जाने पर आपके एल्गोरिदम को ऐसे मामले के लिए काम करना चाहिए ।
  • यहां एक साइट है जो संदर्भ के लिए पुनर्मिलन के कारकों के लिए समर्पित है।
  • मैं गणित के माध्यम से नहीं गया हूं, लेकिन मैं एक परिकल्पना का प्रस्ताव करता हूं कि हर एन का इस एल्गोरिथ्म के लिए एक अलग परिणाम है - अर्थात, कोई एन ऐसा मौजूद नहीं है कि आर एन में कोई उपन्यास कारक नहीं है। अगर कोई उनके जवाब में साबित या नापसंद करता है तो मैं 250 अंकों का इनाम पेश करूंगा । थॉमस कावा ने एक सुरुचिपूर्ण सबूत का प्रस्ताव दिया , और मैंने इनाम दिया।

बिल्ट-इन प्राइम चेकिंग और फैक्टराइजेशन निष्पक्ष खेल हैं?
मार्टिन एंडर

@ मार्टिनबटनर कोई प्रतिबंध नहीं।
AdmBorkBork


@alephalpha बेशक एक OEIS लिंक है ;-) धन्यवाद!
AdmBorkBork

जवाबों:


5

पायथ, 16 14 13 बाइट्स

-F_m{P/^Td9SQ

जैसा कि सबसे अच्छा मैं बता सकता हूं, 19 हमेशा के लिए ले जाता है।

-F_m{P/^Td9SQ      Implicit: Q = input
           SQ      Inclusive range 1 to Q
                        Implicit lambda d:
    {P                  unique primes dividing
       ^Td              10**d
      /   9                  //9
   m               map lambda over the range
   m{P/^Td9SQ      Unique prime factors of all repunits up to the Qth
  _                Reverse the list
-F                 Reduce by set difference

इसे यहाँ आज़माएँ ।


यदि आप इसे कमांड लाइन से चलाते हैं और SymPy स्थापित है, तो 19 एक सेकंड के भीतर पूरा हो जाता है। पहला जो 2 सेकंड से अधिक समय लेता है, वह इनपुट 38 है।
इसहाक

12

सबूत है कि हर पुनर्मिलन में एक उपन्यास प्रमुख कारक है

Zsigmondy के प्रमेय का उपयोग करते हुए , प्रमाण सरल है। विकिपीडिया से:

संख्या सिद्धांत में, कार्ल Zigigmondy के नाम पर Zsigmondy की प्रमेय में कहा गया है कि यदि a> b> 0 कोप्राइम पूर्णांक हैं, तो किसी भी पूर्णांक n , 1 के लिए , एक अभाज्य संख्या p (जिसे एक आदिम प्रधान भाजक कहा जाता है) जो n को विभाजित करता है - ख n और विभाजित नहीं होता एक कश्मीर - ख कश्मीर किसी भी धनात्मक पूर्णांक के लिए कश्मीर <n निम्नलिखित अपवादों के साथ: [चीजें हैं जो यहाँ लागू नहीं है]।

पुनर्खरीद के समय पर विचार करें 9: अर्थात्, 10 एन -1 । Zsigmondy के प्रमेय द्वारा a = 10 , b = 1 के साथ , कुछ प्रमुख पी | 10 एन -1 जो किसी भी 10 के -1 , के <एन को विभाजित नहीं करता है ।

  • चूँकि p अभाज्य है और 10 n -1 = 9 · R n है , इसलिए इसे 9 या R n में विभाजित करना चाहिए ।

  • p 9 को विभाजित नहीं कर सकता है, क्योंकि 9 = 10 1 -1

  • इसलिए p, R n को विभाजित करता है ।

  • p किसी R k को विभाजित नहीं कर सकता है, क्योंकि यह 10 k -1 = 9 · R k को विभाजित नहीं करता है।

इसलिए Zsigmondy के प्रमेय से p किसी भी आर n , n2 का एक उपन्यास प्रमुख कारक है । ∎


एक दोहराया उपन्यास प्रमुख कारक का एक उदाहरण

प्राइम 487 R 486 का एक दोहराया गया मुख्य कारक है :

फर्मट - एयुलर प्रमेय द्वारा, 10 487-1 mod 1 (मॉड 487) । 10 मॉड 487 का क्रम, यानी 10 की सबसे छोटी शक्ति 1 मॉड 487 है, इसलिए 486 का विभाजक होना चाहिए। वास्तव में, ऑर्डर 486 के बराबर है। यह भी होता है कि न केवल 10 486 48 1 है (mod 487) , यह भी 1 (mod 487 2 ) है

यहाँ देखें कि 10 mod 487 का क्रम 486 है; वह यह है कि, कोई छोटा 10 k -1 487 से विभाज्य नहीं है। जाहिर है, 487 9 को विभाजित नहीं करता है, इसलिए इसे R 486 में विभाजित करना होगा ।


6

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

{{)'1*imf}%W%:-_&}

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

19 पर शुरू (2 के बाद पहला पुनर्मिलन प्रधानमंत्री) इसमें काफी लंबा समय लगेगा।

व्याख्या

यह एक अनाम ब्लॉक (CJam के एक फ़ंक्शन के बराबर) है, जो nस्टैक पर इनपुट संख्या की अपेक्षा करता है और इसके बजाय प्रमुख कारकों की एक सूची छोड़ता है:

{      e# Map this block over [0 1 ... n-1]...
  )'1* e#   Increment and create a string of that many 1s.
  i    e#   Convert to integer.
  mf   e#   Get its prime factors.
}%
W%     e# Reverse the list.
:-     e# Fold set difference onto the list, removing from the first list the elements of
       e# all other lists.
_&     e# Remove duplicates. Unfortunately, this necessary. Thomas Kwa found that the 486th
       e# repunit contains 487^2 (where 487 is a novel prime factor).

3
क्या ... आपने पिछले तीन मिनट में गंभीरता से सिर्फ 20 से 16 तक गोल्फ किया? >।>
AdmBorkBork

@ टिम्मीड सॉर्ट ... मुझे अब 18 के लिए फिर से जाना था, क्योंकि यह पता चला कि मेरा कोड एक धारणा पर आधारित था जिसे मैं अभी साबित नहीं कर सकता या न ही अस्वीकार कर सकता हूं।
मार्टिन एंडर

ओह, यह एक दिलचस्प मामला है - डुप्लिकेट उपन्यास कारक। अच्छा पकड़ा।
AdmBorkBork

4

हास्केल 86 बाइट्स

import Data.Numbers.Primes
f n=[x|x<-primeFactors$div(10^n-1)9,notElem x$f=<<[1..n-1]]

प्रयोग उदाहरण: f 8-> [73,137]

बड़े के लिए बहुत समय और स्मृति लेता है n

परिभाषा का प्रत्यक्ष कार्यान्वयन: उन सभी प्रमुख कारकों xको लें, Rnजो पहले नहीं दिखाई देते f=<<[1..n-1]हैं ( सभी प्रमुख कारक हैं R1 ... R(n-1))।


3

गणितज्ञ 82 74 63 बाइट्स

11 बाइट्स के साथ alephalpha के लिए धन्यवाद बचाया।

Complement@@Reverse@FactorInteger[(10^Range@#-1)/9][[;;,;;,1]]&

R70 के प्रमुख कारक

(10 ^ 70 - 1) / 9 = 1111111111111111111111111111111111111111111111111111111111111111111111111111

FactorInteger[(10^70 - 1)/9]

{{11, 1}, {41, 1}, {71, 1}, {239, 1}, {271, 1}, {4649, 1}, {9091, 1}, {123551, 1}, { 909091, 1}, {4147571, 1}, {102598800232111471, 1}, {265212793249617641, 1}}


R70 के प्रमुख कारक

Complement@@Reverse@FactorInteger[(10^Range@#-1)/9][[;;,;;,1]]&[70]

{4147571, 265212793249617641}


Complement@@Reverse@FactorInteger[(10^Range@#-1)/9][[;;,;;,1]]&
एलेफाल्फा

कृपया का अर्थ स्पष्ट करें [[;;,;;,1]]या [[1 ;; All, 1 ;; All, 1]]। मैं चकरा गया हूं!
डेविड डिक

@DavidCarraher यह किसी सूची के प्रत्येक तत्व के पहले तत्व को लेता है।
लेजियन मम्मल 978

@DavidCarraher [[;;,;;,1]]रूप में ही है [[All,All,1]]
एलेफाल्फा

अब यह समझ में आता है। BTW, आपका पुन: स्थान Rangeबहुत चालाक था।
डेविड डिक

2

MATL , 25 बाइट्स

यह इनपुट के लिए काम करता है 16:

10,i:^9/Y[t0)Yftb!w\~s1=)

निम्नलिखित संस्करण 31 बाइट्स का उपयोग करता है और अप करने के लिए काम करता है 18। इसके 19लिए लगभग 4 जीबी मेमोरी की आवश्यकता होती है (मैं इसे चलाने में सक्षम नहीं था)।

10,i:^9/Y[t0)5X2Y%Yfotb!w\~s1=)

उदाहरण

>> matl
 > 10,i:^1-,9/t0)5X2Y%Yfotb!w\~s1=)
 > 
> 6
7 13

व्याख्या

समवर्ती इनपुट के लिए विचार करें 6। पहले 111111गणना के प्रमुख विभाजक हैं; इस मामले में परिणाम हैं 3, 7, 11, 13, 37। तब सापेक्ष आपरेशन (विभाजन शेष) संख्या के सभी संयोजनों के लिए की जाती है 1, 11... 111111और अभिकलन divisors। यह MATL के निहित सिंगलटन विस्तार का फायदा उठाता है। इसका परिणाम इस मामले में एक 6एक्स 5मैट्रिक्स है, जिसमें प्रत्येक कॉलम एक विभाजक के समान है। स्वीकृत डिवाइडर (कॉलम) वे हैं जिनके लिए केवल 1मूल्य (अर्थात् अंतिम) शून्य शेष देता है।

10,i:^9/Y[   % generate vector with `1`, `11`, ... depending on input number, say "n"
t0)          % pick the last element: `111...1` (n ones)
5X2Y%        % * convert to uint64, so that larger numbers can be handled
Yf           % prime factors                                             
o            % * convert to double precision, so that modulus can be done
t            % duplicate                                                 
b            % bubble up element in stack                                
!            % transpose                                                 
w            % swap elements in stack                                    
\            % modulus after division (element-wise, singleton expansion)
~s           % number of zero values in each column
1=           % is equal to 1? (element-wise, singleton expansion)
)            % index divisors with that logical index

(*) शॉर्ट वर्जन में निकाला गया


यह करने का एक चतुर तरीका है।
AdmBorkBork

2

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

R(n)=[keys(factor((10^n-19))...]
n->(r=R(n);isprime(r)?r:setdiff(r,reduce(vcat,[R(i)for i=1:n-1])))

यह एक अनाम फ़ंक्शन है जो एक सहायक फ़ंक्शन को कॉल करता है R। इसे कॉल करने के लिए, मुख्य फ़ंक्शन को एक नाम दें, जैसे f=n->...

Ungolfed:

function R(n::Integer)
    collect(keys(factor((10^n - 1) ÷ 9)))
end

function f(n::Integer)
    r = R(n)
    if isprime(r)
        r
    else
        setdiff(r, reduce(vcat, [R(i) for i = 1:n-1]))
    end
end

2

LabVIEW, 33 LabVIEW आदिम

19 हमेशा के लिए लेता है ...

जब वे दूसरे ऐरे में पाए जाते हैं तो सभी प्राइम को बचाकर और अंतिम सेट से तत्वों को हटाकर कार्य करें।


1

जे, 24 बाइट्स

[:({:-.}:)@:q:[:+/\10^i.

6 (जैसे के 19xबजाय 19) के बाद विस्तारित-सटीक संख्या विज्ञान की अपेक्षा करता है ।

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

वहाँ शायद एक छोटा रास्ता है जो फट से उत्पन्न होता है जो कैप से बचा जाता है।

व्याख्या

[: ({: -. }:) @: q: [: +/\ 10 ^ i.
                                i. Range [0, input)
                           10 ^    10 raised to the power of the range
                       +/\         Running sum of this list (list of repunits)
                 q:                Prime factors of the repunits
              @:                   Composed with
   ({: -. }:)                      Unique prime factors of last repunit
    {:                              Factors of last repunit (tail of matrix)
       -.                           Set subtraction with
          }:                        Rest of the matrix (curtail)

यह कैसे काम करता है, नेत्रहीन

मुझे लगता है कि इस प्रकार के दृश्य स्पष्टीकरण उन लोगों के लिए पेट के लिए आसान हैं जो जे को नहीं जानते हैं। ये आरईपीएल से परिणाम हैं।

   10 ^ i.6
1 10 100 1000 10000 100000

   +/\ 10 ^ i. 6
1 11 111 1111 11111 111111

   q: +/\ 10 ^ i. 6
 0   0  0  0  0
11   0  0  0  0
 3  37  0  0  0
11 101  0  0  0
41 271  0  0  0
 3   7 11 13 37

   ({: -. }:) q: +/\ 10 ^ i. 6
7 13
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.