Tạo một số số thô


15

Lý lịch

Một số ncó thể được mô tả là thông Bqua nếu tất cả các yếu tố chính nvượt quá B.

Các thách thức

Cho hai số nguyên dương Bk, xuất ra các số đầu tiên k B.

Ví dụ

Hãy f(B, k)là một hàm trả về tập hợp chứa các số đầu tiên k B.

> f(1, 10)
1, 2, 3, 4, 5, 6, 7, 8, 9, 10

> f(2, 5)
1, 3, 5, 7, 9

> f(10, 14)
1, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59

2
Bạn có thể giải thích về thách thức? Tôi không hiểu nó Có thể giải thích các ví dụ?
db

Tôi không hiểu tại sao bạn bao gồm 1 trong tất cả các câu trả lời của bạn khi nó không bao giờ lớn hơn B?
kamoroso94

1
1 không có thừa số nguyên tố, vì vậy mọi thừa số nguyên tố của 1 lớn hơn B và 1 sẽ xuất hiện trong đầu ra độc lập với B.
Hood

@db Yếu ntố thành số nguyên tố. Nếu tất cả các số nguyên tố đó lớn hơn B, n là-thông Bqua.
Addison Crump

@AddisonCrump Vì vậy, ví dụ, vì các số nguyên tố cho 35 là 5 và 7, 35 là 4-thô? Đây có phải là một số thuật ngữ phổ biến được công nhận? Chưa bao giờ nghe điều đó. Tôi vẫn không theo các ví dụ, đặc biệt không phải là ví dụ cuối cùng. 14 số nhưng 10 là gì ??
db

Câu trả lời:


5

Haskell , 53 44 byte

b%k=take k[n|n<-[1..],all((>0).mod n)[2..b]]

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

Cảm ơn H.PWiz cho -9 byte!

b%k=                       -- given inputs b and k
 take k                    -- take the first k elements from 
  [n|n<-[1..]              -- the infinite list of all n > 0
   ,all            [2..b]] -- where all numbers from 2 to b (inclusive)
      ((>0).mod n)         -- do not divide n.

Điều này có thể được đơn giản hóa phần nào
H.PWiz

@ H.PWiz Đúng vậy, bằng cách nào đó tôi chỉ nghĩ về việc đưa (>b)phần bên trong sự hiểu biết (không hoạt động) mà không phải là cách khác. Cảm ơn!
Laikoni

5

Python 3 , 80 , 75 byte

lambda B,k:[i for i in range(1,-~B*k)if all(i%j for j in range(2,B+1))][:k]

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

Nhờ vào shooqie vì đã tiết kiệm 5 byte.

Điều này giả định rằng số B-thô thứ k sẽ không bao giờ vượt quá Bk , mà tôi không biết cách chứng minh, nhưng có vẻ như là một giả định khá an toàn (và tôi không thể tìm thấy bất kỳ mẫu đối lập nào).

Giải pháp thay thế:

Python 2 , 78 byte

B,k=input()
i=1
while k:
 if all(i%j for j in range(2,B+1)):print i;k-=1
 i+=1

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

Giải pháp này không làm cho giải pháp trên. Và hiệu quả hơn nhiều.


3
Hmm, giả định đó có thể kiểm chứng được, nhưng dù sao cũng là một vấn đề thú vị. Tôi sẽ trả tiền cho một bằng chứng.
Addison Crump

1
Tại sao không lambda B,k:[i for i in range(1,-~B*k)if all(i%j for j in range(2,B+1))][:k]?
shooqie

1
@BlackOwlKai Nghe hay đấy. Xem thêm math.stackexchange.com/questions/2983364/ từ
Anush

@Anush Đáng buồn thay, bằng chứng của tôi đã không hoạt động, vì tôi đã phạm sai lầm
Black Owl Kai


3

Perl 6 , 35 32 byte

-3 byte nhờ nwellnof!

{grep(*%all(2..$^b),1..*)[^$^k]}

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

Một khối mã ẩn danh có hai số nguyên và trả về một danh sách các số nguyên.

Giải trình

{                              }  # Anonymous code block
 grep(             ,1..*)        # Filter from the positive integers
      *              # Is the number
       %             # Not divisible by
        all(      )  # All of the numbers
            2..$^b   # From 2 to b
                         [^$^k]   # And take the first k numbers

Không gì alllàm gì?
Addison Crump

1
@AddisonCrump allkiểm tra nếu tất cả các yếu tố trong danh sách là trung thực. Tôi sẽ sớm thêm một lời giải thích cho toàn bộ sự việc
Jo King

@nwellnhof Wow! Vì vậy, đó là những gì Giao lộ hữu ích cho!
Jo King

Có, lưu ý rằng bạn cũng có thể sử dụng [&]thay vì all.
nwellnhof

@AddisonCrump Tôi đoán allkhông còn được sử dụng theo cách đó nữa, vì vậy tôi nên cập nhật câu trả lời của mình. alltạo một Giao diện của các giá trị trong phạm vi 2..bvà mọi thao tác được thực hiện trên Giao diện sẽ được thực hiện trên tất cả các giá trị một cách đồng thời. Khi được đánh giá trong bối cảnh Boolean bởi grep, điều này sụp đổ vào việc liệu tất cả các giá trị trong Giao lộ có trung thực hay không, tức là khác không
Jo King

3

Husk , 9 8 byte

↑foΛ>⁰pN

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

Bk

↑         -- take the first k elements 
       N  -- from the natural numbers
 f        -- filtered by
  o   p   -- the prime factors
   Λ>⁰    -- are all larger than the first input

2

Than , 33 byte

NθNη≔⁰ζW‹Lυη«≦⊕ζ¿¬Φθ∧κ¬﹪ζ⊕κ⊞υζ»Iυ

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải trình:

NθNη

Đầu vào Bk.

≔⁰ζ

Đặt zthành 0.

W‹Lυη«

Lặp lại cho đến khi chúng ta có kgiá trị.

≦⊕ζ

Tăng z.

¿¬Φθ∧κ¬﹪ζ⊕κ

Chia zcho tất cả các số từ 2đến Bvà xem nếu có phần còn lại bằng không.

⊞υζ»

Nếu không thì đẩy zvào danh sách trống được xác định trước.

Iυ

Truyền danh sách thành chuỗi và ngầm xuất nó.


2

JavaScript (ES6), 68 byte

Đưa đầu vào là (b)(k).

b=>k=>(o=[],n=1,g=d=>(d<2?o.push(n)==k:n%d&&g(d-1))||g(b,n++))(b)&&o

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

Đã bình luận

b => k => (             // input = b and k
  o = [],               // o[] = output array
  n = 1,                // n = value to test
  g = d => (            // g = recursive function, taking the divisor d
    d < 2 ?             // if d = 1:
      o.push(n) == k    //   push n into o[] and test whether o[] contains k elements
    :                   // else:
      n % d && g(d - 1) //   if d is not a divisor of n, do a recursive call with d - 1
    ) ||                // if the final result of g() is falsy,
    g(b, n++)           // do a recursive call with d = b and n + 1
)(b)                    // initial call to g() with d = b
&& o                    // return o[]

1

Thạch , 10 byte

1µg³!¤Ịµ⁴#

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

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

1µg³!¤Ịµ⁴#    Dyadic main link. Left = B, right = k
       µ⁴#    Take first k numbers satisfying...
  g             GCD with
   ³!¤          B factorial
      Ị         is insignificant (abs(x) <= 1)?
1µ            ... starting from 1.


1

APL (NARS), 52 ký tự, 104 byte

r←a f w;i
r←,i←1⋄→3
i+←1⋄→3×⍳∨/a≥πi⋄r←r,i
→2×⍳w>↑⍴r

Ở trên có vẻ như các hàng sau 'r ← afw; i' có tên 1 2 3; test:

  o←⎕fmt
  o 1 h 2
┌2───┐
│ 1 2│
└~───┘
  o 1 h 1
┌1─┐
│ 1│
└~─┘
  o 10 h 14
┌14───────────────────────────────────────┐
│ 1 11 13 17 19 23 29 31 37 41 43 47 53 59│
└~────────────────────────────────────────┘

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.