Ardışık Asal Ürünler


11

Kum havuzuna teslim edildiğimde, hepsi birbirini takip eden 4 primer ürün olan 7 × 11 × 13 × 17 olarak çarpanlarına ayırabileceğiniz 17017 itibarım vardı.

İki veya daha fazla ardışık primerin tüm ürünlerini giriş tamsayısına kadar çıktılamak için lütfen bir işlev veya program yazın n. Örneğin, n=143çıktı vermeniz gerekir 6, 15, 30, 35, 77, 105, 143(veya eşdeğer çıktı biçimi).

G / Ç ve boşluklarda normal kısıtlamalar geçerlidir.

Bu , bu yüzden en kısa program kazanır.



2
Çıktı sıralanmalı mı bırakılmamalı mı?
Fatalize

@Fatalize Bunun sıralanmasını kastediyordum, ama yeterince iyi belirtmedim ve sıralı bir liste çıkarmayan birkaç cevap var.
Neil

Yanıtlar:


6

Jöle , 14 10 bayt

(Kuşkusuz burada yapmak için golf var! - evet ...)
@Dennis sayesinde -4 bayt - bir aralık kullanarak n'den büyük olanı değiştirin

ÆRẆP€ḟÆRfR

Not - bu hem son derece verimsizdir hem de sonuçlar sıralanmamıştır.

TryItOnline'da test edin

Nasıl?

ÆRẆP€ḟÆRfR - main link takes an argument, n
ÆR    ÆR   - primes up to n
  Ẇ        - all sublists
   P€      - product for each
     ḟ     - filter out the primes (since the sublists include those of lnegth 1)
        fR - filter out any not in range [1,N]
             (yep, it's calculating all products of primes up to n - gross)

2
İhtiyacınız yok µve ³; >Ðḟkendi başına iyi çalışıyor. fRdaha da kısadır.
Dennis

@Dennis - Üstün yönteminizi bekliyorum. Teşekkürler!
Jonathan Allan

4

MATL , 25 20 bayt

Zq&Xf"@gnq?2MpG>~?6M

Jonathan Allan'ın cevabındakine benzer bir yaklaşım .

Çevrimiçi deneyin!


Eski sürüm, 25 bayt

:YF!"@2<@sq0@0hhdz2=v?X@D

Bu 1, girdiden girdiye kadar tüm sayılar için asal faktör ayrışmasının üslerini elde eder . Her biri için şunları kontrol eder:

  1. Tüm üsler 2'den küçükse.
  2. Tüm üslerin toplamı 1'den büyükse.
  3. Üs dizisi her uçta ek bir sıfır ile genişletilir. Genişletilmiş dizinin ardışık farklılıkları hesaplanır. Tam olarak sıfır olmayan 2 fark olmalıdır.

Üç koşul yerine getirilirse, sayı görüntülenir. Sonuçlar artan sıradadır.


4

JavaScript (ES6), 105 104 bayt

n=>{for(i=1,P=[];i++<n;P[P.every(v=>i%v)?i:n]=i);P.map(i=>P.map(j=>j>i&&(p*=j)<=n&&console.log(p),p=i))}

gösteri

var f =
n=>{for(i=1,P=[];i++<n;P[P.every(v=>i%v)?i:n]=i);P.map(i=>P.map(j=>j>i&&(p*=j)<=n&&console.log(p),p=i))}

f(143)


2

05AB1E , 17 15 bayt

L<ØŒ€PD¹>‹ÏDp_Ï

açıklama

L<Ø                 # get the first N primes, where N is the input
   Œ                # get all combinations of consecutive primes
    €P              # calculate the product of these sublists
      D¹>‹Ï         # keep only the products less than or equal to N
           Dp_Ï     # keep only those that aren't prime

Çevrimiçi deneyin!


1

Pyth, 18 bayt

f}PTftlY.:fP_YSQ)S

STDIN üzerinde bir tamsayı girişi alan ve bir tamsayı listesi basan bir program.

Çevrimiçi deneyin

Nasıl çalışır

f}PTftlY.:fP_YSQ)S  Program. Input: Q
              SQ    Yield [1, 2, 3, ..., Q]
          fP_Y      Filter that by primality
        .:      )   Yield all sublists of that
    f               Filter the sublists by:
      lY             Length
     t               -1
                    removing sublists of length 1
f                S  Filter [1, 2, 3, ..., Q] (implicit input fill) by:
  PT                 Prime factorisation
 }                   is in the sublists
                    Implicitly print

1

Jöle , 11 bayt

ÆfÆCI=1Ȧµ€T

En kısa Jelly yanıtı değil, ancak bu yaklaşım oldukça verimli ve çıktı sıralanıyor.

Çevrimiçi deneyin!

Nasıl çalışır

ÆfÆCI=1Ȧµ€T  Main link. Argument: n

        µ€   Map the preceding chain over each k in [1, ..., n].
Æf             Compute all prime factors of k, with multiplicities.
  ÆC           Count the number of primes less than or equal to each prime factor.
               This maps the j-th to j.
    I          Increments; compute the forward differences of consecutive indices.
     =1        Compare each difference with 1.
       Ȧ       All; return 1 iff the array is non-empty and has no zeroes.
          T  Truth; yield all indices for which the chain returned 1.
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.