Obecnie coraz trudniej jest być złożonym

14

Biorąc niepusty lista L liczby całkowite większe od 1 , to określenie d (L) , jak najmniejszej liczby całkowitej, tak że n + D (L) jest kompozyt dla każdego n , w L .

Definiujemy sekwencję jako n :

  • a 0 = 2
  • i + 1 jest liczbą całkowitą większą niż najmniejsza i tak, że d (a 0 , ..., a I , A i + 1 )> d (a 0 , ..., a i )

Twoje zadanie

Możesz:

  • Weź liczbę całkowitą N i zwróć N-ty ciąg sekwencji (indeksowany 0 lub indeksowany 1)
  • Weź liczbę całkowitą N i zwróć pierwsze N składników sekwencji
  • Nie przyjmuj żadnych danych i drukuj sekwencję na zawsze

To jest , więc wygrywa najkrótsza odpowiedź w bajtach!

Jest OK, jeśli Twój kod staje się wolny, gdy N staje się większy, ale powinien znaleźć co najmniej 20 pierwszych haseł w mniej niż 2 minuty.

Pierwsze warunki

  • 0 = 2 , a d (2) = 2 (to trzeba dodać 2, tak, że 2 + 2 jest złożona)
  • a 1 = 3, ponieważ d (2, 3) = 6 (musimy dodać 6, aby 2 + 6 i 3 + 6 były złożone)
  • a 2 = 5, ponieważ d (2, 3, 5) = 7 (musimy dodać 7, aby 2 + 7, 3 + 7 i 5 + 7 były złożone), podczas gdy d (2, 3, 4) jest nadal równa 6
  • itp.

Poniżej znajduje się 100 pierwszych terminów sekwencji (nieznanych w OEIS w momencie publikacji).

  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
źródło

Odpowiedzi:

1

Pyth, 24 bajty

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

Demonstracja

Zasadniczo zaczynamy od [2], a następnie dodajemy elementy 1 na raz, naprzemiennie znajdując d, a następnie dodając element i tak dalej. Wysyła pierwsze nelementy sekwencji.

Zawiera filtr wewnątrz pierwszego filtra liczb całkowitych wewnątrz pierwszego filtra liczb całkowitych wewnątrz pętli powtarzania zastosowania.

Wyjaśnienie:

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

Oczywiste jest powtarzanie wysiłku między dwoma połączeniami „Dodaj i sprawdź, czy liczba pierwsza”, ale nie jestem pewien, jak to wyeliminować.

isaacg
źródło
1

Galaretka , 31 bajtów

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

Wypróbuj online!

Galaretka ssie sekwencje nawrotów. : /

Erik the Outgolfer
źródło
1

Siatkówka , 74 bajty

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

Wypróbuj online! 0-indeksowane. Wyjaśnienie:

K`__;

Każda linia iw workarea zawiera dwie wartości Jednoargumentowy, aᵢ;d+aᵢ. Zaczynamy od a₀=2i d+a₀=0(ponieważ jest bardziej golfowy).

"$+"{
...
)

Powtórz Nczasy pętli .

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

Powtarzaj, dopóki jest co najmniej jeden numer niepodzielny.

;
;_

Przyrost d.

.+$
$&¶$&

Powiel ostatni wiersz, kopiując aᵢ₋₁do aᵢ.

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

Powtarzaj, dopóki d+aᵢjest złożony.

.+$
_$&_

Przyrost aᵢ.

%`\G_

Konwertuj wyniki na dziesiętne.

Neil
źródło
1

Czysty , 138 130 128 bajtów

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])

Wypróbuj online!

Rozszerzony:

$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)
Obrzydliwe
źródło
1

Julia 0.6 , 145 130 bajtów

~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])

Wypróbuj online!

(-15 bajtów przy użyciu moich nowych i ulepszonych umiejętności gry w golfa - przeciążenie operatora, zamiana warunkowa na trójskładnikową, a tym samym usunięcie returnsłowa kluczowego.)

Rozszerzony :

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 - Przywróć Monikę
źródło