Sản phẩm của số nguyên tố liên tiếp


11

Tính đến thời điểm nộp vào hộp cát, tôi đã có 17017 danh tiếng, tất cả các bạn sẽ có thể tính là 7 × 11 × 13 × 17, một sản phẩm của 4 số nguyên tố liên tiếp.

Vui lòng viết một hàm hoặc chương trình để xuất tất cả các sản phẩm của hai hoặc nhiều số nguyên tố liên tiếp lên đến một số nguyên đầu vào n. Ví dụ, cho trước n=143bạn nên xuất 6, 15, 30, 35, 77, 105, 143(hoặc định dạng đầu ra tương đương).

Các hạn chế thông thường đối với I / O và sơ hở được áp dụng.

Đây là , vì vậy chương trình ngắn nhất sẽ thắng.



2
Có nên sắp xếp đầu ra hay không?
Gây tử vong

@Firthize Tôi có nghĩa là nó được sắp xếp, nhưng tôi thấy tôi đã không chỉ định nó đủ tốt và đã có một số câu trả lời không đưa ra một danh sách được sắp xếp.
Neil

Câu trả lời:


6

Thạch , 14 10 byte

(không có nghi ngờ gì về việc chơi golf ở đây! - vâng ...)
-4 byte nhờ @Dennis - thay thế kiểm tra lớn hơn n bằng cách sử dụng một phạm vi

ÆRẆP€ḟÆRfR

Lưu ý - điều này là cực kỳ không hiệu quả kết quả là không được sắp xếp.

Kiểm tra nó tại TryItOnline

Làm sao?

Æ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
Bạn không cần µ³; >Ðḟchỉ hoạt động tốt trên chính nó. fRthậm chí còn ngắn hơn
Dennis

@Dennis - Tôi chờ đợi phương pháp ưu việt của bạn. Cảm ơn!
Jonathan Allan

4

MATL , 25 20 byte

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

Cách tiếp cận tương tự như trong câu trả lời của Jonathan Allan .

Hãy thử trực tuyến!


Phiên bản cũ, 25 byte

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

Điều này có được số mũ của phân tách thừa số nguyên tố cho tất cả các số từ 1đầu vào. Đối với mỗi nó kiểm tra:

  1. Nếu tất cả các số mũ nhỏ hơn 2.
  2. Nếu tổng của tất cả các số mũ lớn hơn 1.
  3. Mảng số mũ được mở rộng với số 0 bổ sung ở mỗi đầu. Sự khác biệt liên tiếp của mảng mở rộng được tính toán. Cần có chính xác 2 điểm khác biệt.

Nếu ba điều kiện được thỏa mãn, số được hiển thị. Kết quả theo thứ tự incresing.


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

Bản giới thiệu

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 byte

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

Giải trình

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

Hãy thử trực tuyến!


1

Bình thường, 18 byte

f}PTftlY.:fP_YSQ)S

Một chương trình lấy đầu vào của một số nguyên trên STDIN và in danh sách các số nguyên.

Dùng thử trực tuyến

Làm thế nào nó hoạt động

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

Thạch , 11 byte

ÆfÆCI=1Ȧµ€T

Không phải là câu trả lời ngắn nhất của Jelly, nhưng cách tiếp cận này khá hiệu quả và đầu ra được sắp xếp.

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

Æ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.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.