Es wird heutzutage immer schwieriger, zusammengesetzt zu sein

14

Bei einer nicht-leeren Liste L von ganzen Zahlen größer als 1 , definieren wir d (L) als die kleinste positive ganze Zahl , so daß n + d (L) ist Verbund für jeden n in L .

Wir definieren die Folge a n als:

  • a 0 = 2
  • a i + 1 ist die kleinste ganze Zahl größer als a i, so dass d (a 0 , ..., a i , a i + 1 )> d (a 0 , ..., a i )

Deine Aufgabe

Sie können entweder:

  • Nehmen Sie eine ganze Zahl N und geben Sie den N-ten Term der Sequenz zurück (0-indiziert oder 1-indiziert)
  • Nehmen Sie eine ganze Zahl N und geben Sie die ersten N Terme der Sequenz zurück
  • Nehmen Sie keine Eingabe und drucken Sie die Sequenz für immer

Das ist , also gewinnt die kürzeste Antwort in Bytes!

Es ist in Ordnung, wenn Ihr Code langsam wird, wenn N größer wird, aber es sollte mindestens die 20 ersten Begriffe in weniger als 2 Minuten finden.

Erste Begriffe

  • a 0 = 2 und d (2) = 2 (wir müssen 2 addieren, damit 2 + 2 zusammengesetzt ist)
  • a 1 = 3 weil d (2, 3) = 6 (wir müssen 6 addieren, damit 2 + 6 und 3 + 6 zusammengesetzt sind)
  • a 2 = 5, weil d (2, 3, 5) = 7 (wir müssen 7 addieren, damit 2 + 7, 3 + 7 und 5 + 7 zusammengesetzt sind), wohingegen d (2, 3, 4) immer noch ist gleich 6
  • etc.

Nachfolgend sind die 100 ersten Begriffe der Sequenz aufgeführt (zum Zeitpunkt der Veröffentlichung in OEIS unbekannt).

  2,   3,   5,   6,  10,  15,  17,  19,  22,  24,
 30,  34,  35,  39,  41,  47,  51,  54,  56,  57,
 70,  79,  80,  82,  92,  98, 100, 103, 106, 111,
113, 116, 135, 151, 158, 162, 165, 179, 183, 186,
191, 192, 200, 210, 217, 223, 226, 228, 235, 240,
243, 260, 266, 274, 277, 284, 285, 289, 298, 307,
309, 317, 318, 329, 341, 349, 356, 361, 374, 377,
378, 382, 386, 394, 397, 405, 409, 414, 417, 425,
443, 454, 473, 492, 494, 502, 512, 514, 519, 527,
528, 560, 572, 577, 579, 598, 605, 621, 632, 642
Arnauld
quelle

Antworten:

1

Pyth, 24 Bytes

Pu+GfP_+Tf!fP_+ZYG)eGQ]2

Demonstration

Grundsätzlich beginnen wir damit [2], Elemente 1 nacheinander dhinzuzufügen, indem wir abwechselnd ein Element suchen , dann hinzufügen und so weiter. Gibt die ersten nElemente der Sequenz aus.

Enthält einen Filter innerhalb eines ersten Ganzzahlfilters innerhalb eines ersten Ganzzahlfilters innerhalb einer Schleife zum wiederholten Anwenden.

Erläuterung:

Pu+GfP_+Tf!fP_+ZYG)eGQ]2
 u                   Q]2    Starting with `[2]`, do the following as many times
                            as the input
         f        )         Starting from 1 and counting upward, find d where
          !f     G          None of the elements in the current list
            P_+ZY           plus d give a prime.
    f              eG       Starting from the end of the current list and counting
                            upward, find the first number which
     P_+T                   plus d gives a prime.
  +G                        Append the new number to the current list
P                           Trim the last element of the list

Es gibt offensichtlich wiederholte Versuche zwischen den beiden Aufrufen "Add and check if prime", aber ich bin nicht sicher, wie ich es beseitigen soll.

isaacg
quelle
1

Gelee , 31 Bytes

ṛ,;1+ÆPẸṆʋ1#ⱮẎ</
Ḷ߀‘Ṫç1#ƊḢƲ2⁸?

Probieren Sie es online!

Jelly saugt an Wiederholungssequenzen. : /

Erik der Outgolfer
quelle
1

Netzhaut , 74 Bytes

K`__;
"$+"{/;(?!(__+)\1+\b)/+`;
;_
.+$
$&¶$&
)/;(__+)\1+$/+`.+$
_$&_
%`\G_

Probieren Sie es online! 0-indiziert. Erläuterung:

K`__;

Jede Zeile iim Arbeitsbereich enthält zwei unäre Werte aᵢ;d+aᵢ. Wir beginnen mit a₀=2und d+a₀=0(weil es golferischer ist).

"$+"{
...
)

Wiederholen Sie die Loop- NZeiten.

/;(?!(__+)\1+\b)/+`

Wiederholen Sie diesen Vorgang, solange mindestens eine nicht zusammengesetzte Nummer vorhanden ist.

;
;_

Inkrementieren d.

.+$
$&¶$&

Dupliziere die letzte Zeile und kopiere aᵢ₋₁nach aᵢ.

/;(__+)\1+$/+`

Wiederholen, während d+aᵢes zusammengesetzt ist.

.+$
_$&_

Inkrementieren aᵢ.

%`\G_

Konvertieren Sie die Ergebnisse in Dezimalzahlen.

Neil
quelle
1

Sauber , 138 130 128 Bytes

import StdEnv
$l=until(\v=all(\n=any((<)1o gcd(n+v))[2..n+v-1])l)inc 1

map hd(iterate(\l=hd[[n:l]\\n<-[hd l..]| $[n:l]> $l])[2])

Probieren Sie es online!

Erweitert:

$l=until(\v=all(\n=any((<)1o gcd(n+v))[2..n+v-1])l)inc 1
$l=until(                                         )inc 1  // first value from 1 upwards where _
         \v=all(                                )l        // _ is true for everything in l
                \n=any(              )[2..n+v-1]          // any of [2,3..n+v-1] match _
                             gcd(n+v)                     // the gcd of (n+v) and ^
                           o                              // (composed) ^ is _
                       (<)1                               // greater than 1

map hd(iterate(\l=hd[[n:l]\\n<-[hd l..]| $[n:l]> $l])[2]) 
map hd(                                                 ) // the first element of each list in _
       iterate(                                     )[2]  // infinite repeated application of _ to [2]
               \l=hd[                              ]      // the head of _
                     [n:l]                                // n prepended to l
                          \\n<-[hd l..]                   // for every integer n greater than the head of l
                                       | $[n:l]> $l       // where d(n0..ni+1) > d(n0..ni)
Οurous
quelle
1

Julia 0,6 , 145 130 Bytes

~L=(x=1;while any(map(m->all(m%i>0 for i=2:m-1),L+x));x+=1;end;x)
!n=n<1?[2]:(P=!(n-1);t=P[end]+1;while ~[P;t]<=~P;t+=1;end;[P;t])

Probieren Sie es online!

(-15 Bytes unter Verwendung meiner neuen und verbesserten Golffähigkeiten - Bedienerüberlastung, Ersetzen der Bedingung durch Ternär und Entfernen des returnSchlüsselworts.)

Erweitert :

function primecheck(m)
    all(m%i>0 for i2:m-1)
end

function d(L)
    x = 1
    while any(map(primecheck, L+x))
        x += 1
    end
    return x
end

function a(n)
    n > 0 || return [2]
    Prev = a(n-1)
    term = Prev[end] + 1
    while d([Prev;term])  d(Prev)
        term += 1
    end
    return [Prev;term]
end
Sundar - Setzen Sie Monica wieder ein
quelle