Produk Primes Berturut-turut

11

Pada saat pengajuan ke kotak pasir, saya memiliki reputasi 17017, yang Anda semua dapat pisahkan sebagai 7 × 11 × 13 × 17, produk dari 4 bilangan prima berturut-turut.

Silakan tulis fungsi atau program untuk menampilkan semua produk dari dua atau lebih bilangan prima berturut-turut hingga bilangan bulat input n. Misalnya, mengingat n=143Anda harus menampilkan 6, 15, 30, 35, 77, 105, 143(atau format keluaran yang setara).

Pembatasan normal pada I / O dan celah berlaku.

Ini adalah , jadi program terpendek menang.

Neil
sumber
4
oeis.org/A097889
Robert Fraser
2
Haruskah output diurutkan atau tidak?
Fatalkan
@Fatalize Saya bermaksud membuatnya diurutkan, tapi saya melihat saya tidak menentukan dengan cukup baik dan sudah ada beberapa jawaban yang tidak menampilkan daftar yang diurutkan.
Neil

Jawaban:

6

Jelly , 14 10 byte

(tidak diragukan lagi ada golf yang bisa dilakukan di sini! - ya ...)
-4 byte terima kasih kepada @ Dennis - ganti cek lebih besar dari n dengan menggunakan rentang

ÆRẆP€ḟÆRfR

Catatan - ini sangat tidak efisien dan hasilnya tidak disortir.

Uji di TryItOnline

Bagaimana?

Æ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)
Jonathan Allan
sumber
2
Anda tidak perlu µdan ³; >Ðḟbekerja dengan baik sendiri. fRbahkan lebih pendek.
Dennis
@ Dennis - Saya menunggu metode superior Anda. Terima kasih!
Jonathan Allan
4

MATL , 25 20 byte

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

Pendekatan serupa dengan itu dalam jawaban Jonathan Allan .

Cobalah online!


Versi lama, 25 byte

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

Ini mendapatkan eksponen dekomposisi faktor prima untuk semua angka dari 1input. Untuk setiap cek:

  1. Jika semua eksponen kurang dari 2.
  2. Jika jumlah semua eksponen lebih besar dari 1.
  3. Array eksponen diperpanjang dengan nol tambahan di setiap ujung. Perbedaan berturut-turut dari array yang diperluas dihitung. Harus ada tepat 2 perbedaan nol.

Jika ketiga persyaratan terpenuhi, angka ditampilkan. Hasilnya berurutan.

Luis Mendo
sumber
4

Javascript (ES6), 105 104 byte

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

Demo

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)

Arnauld
sumber
2

05AB1E , 17 15 byte

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

Penjelasan

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

Cobalah online!

Emigna
sumber
1

Pyth, 18 byte

f}PTftlY.:fP_YSQ)S

Program yang mengambil input bilangan bulat pada STDIN dan mencetak daftar bilangan bulat.

Cobalah online

Bagaimana itu bekerja

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
TheBikingViking
sumber
1

Jelly , 11 byte

ÆfÆCI=1Ȧµ€T

Bukan jawaban Jelly terpendek, tetapi pendekatan ini agak efisien dan hasilnya diurutkan.

Cobalah online!

Bagaimana itu bekerja

Æ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.
Dennis
sumber