Bugünlerde kompozit olmak gittikçe zorlaşıyor


14

Boş olmayan bir listesi verilen L daha büyük tam sayı 1 , tanımladığımızı d (L) en küçük pozitif tam sayı, örneğin edilene n + d (L) olan birleşik her biri için n de L .

A n dizisini şu şekilde tanımlarız :

  • a 0 = 2
  • Bir i 1 + daha küçük tam sayı olduğu bir i şekilde D'nin (a 0 , ..., bir i , bir i + 1 )> D, (a 0 , ..., bir i )

Senin görevin

Şunlardan birini yapabilirsiniz:

  • Bir tamsayı al , N ve dönüş n'inci dizisinin terimi (0 endeksli ya da 1-endeksli)
  • Tamsayıdır bir al , N ve birinci geri N dizisinin koşullar
  • Girdi almayın ve diziyi sonsuza dek yazdırın

Bu , bu yüzden bayt en kısa cevap kazanır!

Kodunuz N büyüdükçe yavaşlıyorsa sorun olmaz , ancak en azından 20 ilk terimi 2 dakikadan daha kısa sürede bulmalıdır.

İlk şartlar

  • a 0 = 2 ve d (2) = 2 (2 + 2'nin bileşik olması için 2 eklememiz gerekir)
  • a 1 = 3 çünkü d (2, 3) = 6 (2 + 6 ve 3 + 6'nın bileşik olması için 6 eklememiz gerekiyor)
  • a 2 = 5 çünkü d (2, 3, 5) = 7 ( 7 eklememiz gerekiyor, böylece 2 + 7, 3 + 7 ve 5 + 7 hepsi bileşik), oysa d (2, 3, 4) hala 6'ya eşit
  • vb.

Aşağıda sekansın ilk 100 terimi verilmiştir (kayıt sırasında OEIS'te bilinmemektedir).

  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

Yanıtlar:


1

Pyth, 24 bayt

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

gösteri

Temel olarak başlıyoruz [2], daha sonra dönüşümlü olarak dbir öğe bularak ve ardından bir öğe ekleyerek vb. Öğeleri tek tek ekliyoruz. nDizinin ilk elemanlarını çıktılar .

Bir tekrar tekrar uygula döngüsünün içindeki bir ilk tamsayı filtresinin içindeki bir ilk tamsayı filtresinin içinde bir filtre içerir.

Açıklama:

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

İki "Başbakan ekle ve kontrol et" çağrısı arasında açıkça tekrarlanan bir çaba var, ancak nasıl ortadan kaldırılacağından emin değilim.



1

Retina , 74 bayt

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

Çevrimiçi deneyin! 0 endeksli. Açıklama:

K`__;

Çalışma alanındaki her satır iiki tekli değer içerir aᵢ;d+aᵢ. Biz başlamak a₀=2ve d+a₀=0(çünkü 's golfier).

"$+"{
...
)

Döngü Nsürelerini tekrarlayın .

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

En az bir kompozit olmayan sayı varken tekrarlayın.

;
;_

Artış d.

.+$
$&¶$&

Kopyalama, son satırı yinelenen aᵢ₋₁için aᵢ.

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

d+aᵢKompozit iken tekrarlayın .

.+$
_$&_

Artış aᵢ.

%`\G_

Sonuçları ondalığa dönüştürün.


1

Temiz , 138 130 128 bayt

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

Çevrimiçi deneyin!

Expanded:

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

1

Julia 0.6 , 145130 bayt

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

Çevrimiçi deneyin!

(Yeni ve geliştirilmiş golf becerilerimi kullanan -15 bayt - operatör aşırı yükleri, koşullu üçlü ile değiştirilir ve böylece returnanahtar kelime kaldırılır .)

Genişletilmiş :

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.