पूर्व में समग्र संख्याएँ


16

अनुक्रम परिभाषा

सकारात्मक पूर्णांक के अनुक्रम a(n)को निम्नानुसार बनाएं:

  1. a(0) = 4
  2. प्रत्येक शब्द a(n), पहले के अलावा, सबसे छोटी संख्या है जो निम्नलिखित को संतुष्ट करती है:
    a) a(n)एक संयुक्त संख्या है,
    b) a(n) > a(n-1), और
    c) a(n) + a(k) + 1प्रत्येक के लिए एक संयुक्त संख्या है 0 <= k < n

तो हम शुरुआत करते हैं a(0) = 4। अगली प्रविष्टि, a(1)होनी चाहिए 9। यह नहीं हो सकता है 5या 7क्योंकि वे समग्र नहीं हैं, और यह नहीं हो सकता है 6या 8क्योंकि 6+4+1=11समग्र नहीं है और 8+4+1=13समग्र नहीं है। अंत में 9+4+1=14, जो समग्र है, इसलिए a(1) = 9

अगली प्रविष्टि, a(2)होना चाहिए 10, क्योंकि यह तुलना में सबसे छोटी संख्या बड़ी है 9के साथ 10+9+1=20और 10+4+1=15दोनों समग्र।

अगली प्रविष्टि के लिए, 11और 13दोनों बाहर हैं क्योंकि वे समग्र नहीं हैं। 12बाहर है क्योंकि 12+4+1=17जो समग्र नहीं है। 14बाहर है क्योंकि 14+4+1=19जो समग्र नहीं है। इस प्रकार, 15अनुक्रम की अगली अवधि वजह से है 15समग्र है और 15+4+1=20, 15+9+1=25और 15+10+1=26सब एक समग्र हैं, इसलिए a(3) = 15

इस क्रम में पहले 30 शब्द इस प्रकार हैं:

4, 9, 10, 15, 16, 22, 28, 34, 35, 39, 40, 46, 52, 58, 64, 70, 75, 76, 82, 88, 94, 100, 106, 112, 118, 119, 124, 125, 130, 136

यह OEIS A133764 है

चुनौती

एक इनपुट पूर्णांक को देखते हुए n, nइस क्रम में वें पद का उत्पादन करता है ।

नियम

  • आप या तो 0- या 1-आधारित अनुक्रमण चुन सकते हैं। कृपया अपनी प्रविष्टि में बताएं।
  • इनपुट और आउटपुट को आपकी भाषा के मूल पूर्णांक प्रकार में फिट होने के लिए माना जा सकता है।
  • इनपुट और आउटपुट किसी भी सुविधाजनक विधि द्वारा दिया जा सकता है ।
  • या तो एक पूर्ण कार्यक्रम या एक समारोह स्वीकार्य हैं। यदि कोई फ़ंक्शन है, तो आप इसे प्रिंट करने के बजाय आउटपुट वापस कर सकते हैं।
  • मानक खामियों को मना किया जाता है।
  • यह इसलिए सभी सामान्य गोल्फिंग नियम लागू होते हैं, और सबसे छोटा कोड (बाइट्स में) जीतता है।

3
शीर्षक: पूर्व में संमिश्र के रूप में जाना जाने वाला अंक।
मैजिक ऑक्टोपस Urn

@MagicOctopusUrn अगर यह कला या संगीत के साथ कुछ करना था, तो मैं इसके साथ जाऊंगा। लेकिन, मैं वर्तमान में मेरे पास मौजूद शीर्षक से चिपके रहूंगा।
AdmBorkBork

एक मजाक के अधिक था;)।
मैजिक ऑक्टोपस Urn

जवाबों:


5

भूसी , 11 बाइट्स

!üȯṗ→+fotpN

1 अनुक्रमित। इसे ऑनलाइन आज़माएं!

व्याख्या

!üȯṗ→+fotpN  Implicit input, a number n.
          N  The list of positive integers [1,2,3,4,..
      f      Keep those
         p   whose list of prime factors
       ot    has a nonempty tail: [4,6,8,9,10,12,..
 ü           De-duplicate wrt this equality predicate:
     +       sum
    →        plus 1
  ȯṗ         is a prime number.
             Result is [4,9,10,15,16,..
!            Get n'th element.

2

पर्ल 6 , 70 बाइट्स

{(4,->+_{first {none($^a X+0,|(_ X+1)).is-prime},_.tail^..*}...*)[$_]}

इसे 0-अनुक्रमित करके देखें

विस्तारित:

{  # bare block lambda with implicit parameter $_

  (  # generate the sequence

    4, # seed the sequence

    -> +_ { # pointy block that has a slurpy list parameter _ (all previous values)

      first

      {  # bare block with placeholder parameter $a

        none(                 # none junction
            $^a               # placeholder parameter for this inner block
          X+                
            0,                # make sure $a isn't prime
            |( _ X+ 1 )       # check all a(k)+1
        ).is-prime            # make sure none are prime
      },

      _.tail ^.. *            # start looking after the previous value
    }

    ...                       # keep generating values until

    *                         # never stop

  )[$_]                       # index into the sequence
}

2

पायथन 2 , 112 107 बाइट्स

बाइट के लिए मिस्टर एक्सकोडर का धन्यवाद ।

n=-1,4;v=5
exec"while any(all((v-~k)%i for i in range(2,v))for k in n):v+=1\nn+=v,;v+=1\n"*input()
print~-v

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


पायथन 2 , 115 109 बाइट्स

n=-1,4;v=4;x=input()
while x:v+=1;k=1^any(all((v-~k)%i for i in range(2,v))for k in n);n+=(v,)*k;x-=k
print v

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


2

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

1 अनुक्रमित

f=(n,a=[-1,p=4])=>a[n]||f(n,a.some(x=>(P=n=>n%--x?P(n):x<2)(x-=~p),p++)?a:[...a,p])

डेमो

टिप्पणी की गई

हेल्पर फंक्शन P () , यदि n प्राइम, या असत्य है , तो सच लौटना :

P = n => n % --x ? P(n) : x < 2

NB: इसे x = n के साथ बुलाया जाना चाहिए ।

मुख्य समारोह f () :

f = (               // given:
  n,                //   n = target index
  a = [-1, p = 4]   //   a = computed sequence with an extra -1 at the beginning
) =>                //   p = last appended value
  a[n] ||           // if a[n] exists, stop recursion and return it
  f(                // otherwise, do a recursive call to f() with:
    n,              //   n unchanged
    a.some(x =>     //   for each value x in a[]:
      P(x -= ~p),   //     rule c: check whether x + p + 1 is prime
                    //     rule a: because a[0] = -1, this will first compute P(p)
      p++           //     rule b: increment p before the some() loop starts
    ) ?             //   end of some(); if truthy:
      a             //     p is invalid: use a[] unchanged
    :               //   else:
      [...a, p]     //     p is valid: append it to a[]
  )                 // end of recursive call



0

जावा 8, 186 173 बाइट्स

n->{int a[]=new int[n+1],r=a[n]=4;a:for(;n>0;)if(c(++r)<2){for(int x:a)if(x>0&c(r-~x)>1)continue a;a[--n]=r;}return r;}int c(int n){for(int i=2;i<n;n=n%i++<1?0:n);return n;}

0 अनुक्रमित।
दुर्भाग्य से प्राइम-चेक (या इस मामले में एंटी-प्राइम / कम्पोजिट चेक) जावा में इतने सस्ते नहीं हैं।

स्पष्टीकरण:

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

n->{                     // Method with integer as both parameter and return-type
  int a[]=new int[n+1],  //  Integer-array of size `n+1`
      r=a[n]=4;          //  Start the result and last item at 4
  a:for(;n>0;)           //  Loop as long as `n` is larger than 0
    if(c(++r)<2){        //   Raise `r` by 1, and if it's a composite:
      for(int x:a)       //    Inner loop over the array
        if(x>0           //     If the item in the array is filled in (non-zero),
           &c(r-~x)>1)   //     and if `r+x+1` is a prime (not a composite number):
          continue a;}   //      Continue the outer loop
      a[--n]=r;}         //    Decrease `n` by 1, and put `r` in the array
  return r;}             //  Return the result

// Separated method to check if a given number is a composite number
// (It's a composite number if 0 or 1 is returned, otherwise it's a prime.)
int c(int n){for(int i=2;i<n;n=n%i++<1?0:n);return n;}

0

रूबी + -rprime, 85 75 बाइट्स

->n{*a=x=4
n.times{x+=1;!x.prime?&&a.none?{|k|(x+k+1).prime?}?a<<x:redo}
x}

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

0-अनुक्रमित nth तत्व को लौटाने वाला एक लैम्ब्डा।

-10 बाइट्स: का उपयोग करें redoऔर एक ternary ऑपरेटर के बजाय loop... breakऔर एक सशर्त श्रृंखला

Ungolfed:

->n{
  *a=x=4                         # x is the most recent value: 4
                                 # a is the list of values so far: [4]
  n.times{                       # Repeat n times:
    x += 1                       # Increment x
    !x.prime? &&                 # If x is composite, and
      a.none?{|k|(x+k+1).prime?} #   for all k, a(n)+x+1 is composite,
      ? a<<x                     # Add x to a
      : redo                     # Else, restart the block (go to x+=1)
  }
  x                              # Return the most recent value
}


0

सी (जीसीसी) ,  140  138 बाइट्स

दो बाइट बचाने के लिए @ जोनाथन फ्रीच को धन्यवाद!

c(n,i){for(i=1;++i<n;)i=n%i?i:n;i=i>n;}f(n){int s[n],k,j,i=0;for(*s=k=4;i++-n;i[s]=k)for(j=!++k;j-i;)2-c(k)-c(k-~s[j++])?j=!++k:f;n=n[s];}

0 अनुक्रमित

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


++k,j=0दो बार हो सकता है j=!++k, 138 बाइट्स
जोनाथन फ्रीच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.