एक कारक साझा करने वाली सबसे छोटी अप्रयुक्त संख्या


11

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

  • अनुक्रम में पहला आइटम 2 है।

  • अनुक्रम में nth आइटम n और 1 के अलावा सबसे छोटा धनात्मक पूर्णांक है जो n (1 के अलावा अन्य) के साथ कम से कम एक कारक साझा करता है जो पहले से सूची में प्रकट नहीं हुआ है।

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

यहाँ अनुक्रम में पहले 25 आइटम हैं:

1  2
2  4
3  6
4  8
5  10
6  3
7  14
8  12
9  15
10 5
11 22
12 9
13 26
14 7
15 18
16 20
17 34
18 16
19 38
20 24
21 27
22 11
23 46
24 21
25 30

संबंधित (एक से ऑफसेट) OEIS

जवाबों:


5

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

R»2ɓ²Rg⁸>1Tḟ⁸ḟḢṭµ/Ṫ

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


मैं बहुत खुश था कि मैंने आपको लिंडन शब्द फैक्टराइजेशन प्रश्न पर आउट-गोल्फ किया था, लेकिन फिर आपने मुझे इसके साथ मारा ... (सभी गंभीरता से हालांकि यह एक बड़ा जवाब है)
notjagan

3

पायथन 3 , 118 117 बाइट्स

कैमरून Aavik के लिए -1 बाइट धन्यवाद !

import math
def f(n,i=3):
 if n<2:return 2
 while 1:
  if math.gcd(n,i)>1>(i in map(f,range(n)))<i!=n:return i
  i+=1

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

कोड बहुत ही अकुशल है (यह पिछले परिणामों में मौजूद नहीं होने वाले मान को बढ़ाता है, और हर नए मूल्य पर फिर से पिछले परिणामों की गणना करता है), इसलिए यह ठीक से काम करता है लेकिन मैं इसे बड़ी संख्या में चलाने की सलाह नहीं दूंगा।


2
छोटी सी टिप: आप इसे बनाकर def f(n,i=3):और i=3लाइन हटाकर एक नई लाइन बचा सकते हैं
कैमरन एविक


2

हास्केल , 60 59 बाइट्स

संपादित करें:

  • -1 बाइट: @xnor ने बताया कि all(/=x)इससे छोटा था x`notElem`

f पूर्णांक लेता है और पूर्णांक देता है।

f n=[x|x<-[2..],gcd x n>1||n<2,all(/=x)$n:map f[1..n-1]]!!0

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

यह बहुत घातीय समय है, इसलिए 21 के बाद TIO बार बाहर है, जबकि मेरी व्याख्या की गई GHCi 22 से पहले उठ गई, इससे पहले कि मैं अभी रुकूं। निम्नलिखित 9 बाइट्स लंबे समय तक एक सूची में याद रखने वाला संस्करण आसानी से हजारों में चला जाता है:

f n=[x|x<-[2..],gcd x n>1||n<2,all(/=x)$n:take(n-1)l]!!0
l=f<$>[1..]

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

  • f nउम्मीदवारों को उत्पन्न करने के लिए एक सूची समझ का उपयोग करता है x, पहले पास के साथ ले रहा है!!0
  • gcd x n>1जाँच करता है कि xऔर nआम कारक हैं।
  • ||n<2n==1कारक आवश्यकता से छूट ।
  • all(/=x)$n:map f[1..n-1]चेक जो xन तो हैn पूर्ववर्ती अनुक्रम तत्व है।

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

1
all(/=x)$वहाँ 1 छोटा है
xnor

2

C # में GCD के लिए कोई अंतर्निहित, नहीं ...

सी # (.NET कोर) , 197 196 194 बाइट्स

n=>{if(n<2)return 2;var p=new int[n-1];int i=0,a,b;for(;i<n-1;)p[i]=f(++i);for(i=2;;i++)if(n!=i){for(a=n,b=i;a*b>0;)if(a>b)a%=b;else b%=a;if(b!=1&a!=1&!System.Array.Exists(p,e=>e==i))return i;}}

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

एक बार फिर, अनुक्रम में संख्याओं की गणना करने के लिए इस कोड का उपयोग करने से बचना चाहिए n>30 ...

  • जीसीडी को बदलकर -1 बाइट while लूप को एfor
  • केविन क्रूज़सेन को धन्यवाद! अच्छा है!

1
a>0&b>0करने के लिए गोल्फ हो सकता हैa*b>0
केविन क्रूज़सेन

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