Hasilkan beberapa angka kasar


15

Latar Belakang

Angka ndapat digambarkan sebagai B-melalui jika semua faktor utama nbenar - benar melebihi B.

Tantangan

Diberikan dua bilangan bulat positif Bdan k, output angka pertama- k Bmelalui

Contohnya

Membiarkan f(B, k)menjadi fungsi yang mengembalikan set yang berisi angka pertama- k Bmelalui.

> 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
Bisakah Anda menguraikan tantangan? Saya tidak mengerti. Mungkin jelaskan contohnya?
db

Saya tidak mengerti mengapa Anda memasukkan 1 dalam semua jawaban Anda padahal tidak pernah lebih besar dari itu B?
kamoroso94

1
1 tidak memiliki faktor prima, sehingga setiap faktor prima 1 lebih besar dari B dan 1 akan muncul dalam output independen dari B.
Hood

@db Buat faktor nmenjadi bilangan prima. Jika semua bilangan prima itu lebih besar dari B, n adalah B-dengan.
Addison Crump

@AddisonCrump Jadi misalnya, karena bilangan prima untuk 35 adalah 5 dan 7, 35 adalah 4-kasar? Apakah ini beberapa istilah umum yang dikenal? Belum pernah mendengarnya sebelumnya. Saya masih tidak di bawah contoh, terutama yang terakhir. 14 angka tapi apa 10 ??
db

Jawaban:


5

Haskell , 53 44 byte

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

Cobalah online!

Terima kasih kepada H.PWiz untuk -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.

Hal ini dapat disederhanakan agak
H.PWiz

@ H.PWiz Benar, entah bagaimana saya hanya berpikir tentang mengambil (>b)-bagian di dalam pemahaman (yang tidak bekerja) tetapi tidak sebaliknya. Terima kasih!
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]

Cobalah online!

Terima kasih kepada shooqie karena telah menghemat 5 byte.

Bk

Solusi alternatif:

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

Cobalah online!

Solusi ini tidak membuat solusi di atas. Dan jauh lebih efisien.


3
Hmm, anggapan itu mungkin bisa diverifikasi, tapi tetap saja masalah yang menarik. Saya akan memberi hadiah.
Addison Crump

1
Mengapa tidak 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 Kedengarannya keren. Lihat juga math.stackexchange.com/questions/2983364/…
Anush

@ Anush Sedihnya, buktiku tidak berfungsi, karena aku melakukan kesalahan
Black Owl Kai


3

Perl 6 , 35 32 byte

-3 byte terima kasih kepada nwellnof!

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

Cobalah online!

Blok kode anonim yang mengambil dua bilangan bulat dan mengembalikan daftar bilangan bulat.

Penjelasan

{                              }  # 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

Apa yang allharus dilakukan
Addison Crump

1
@AddisonCrump allmemeriksa apakah semua elemen dalam daftar benar. Saya akan menambahkan penjelasan untuk semuanya dalam waktu dekat
Jo King

@nwellnhof Wow! Jadi itulah gunanya persimpangan berguna!
Jo King

Ya, catatan bahwa Anda bisa juga menggunakan [&]bukan all.
nwellnhof

@AddisonCrump Saya kira alltidak lagi digunakan dengan cara itu, jadi saya harus memperbarui jawaban saya. allmenciptakan Persimpangan nilai dalam kisaran 2..b, dan operasi apa pun yang dilakukan pada Persimpangan akan dilakukan pada semua nilai secara bersamaan. Ketika dievaluasi dalam konteks Boolean oleh grep, ini runtuh menjadi apakah semua nilai dalam Persimpangan benar, yaitu tidak nol
Jo King

3

Sekam , 9 8 byte

↑foΛ>⁰pN

Cobalah online!

Dibutuhkan B sebagai yang pertama dan k sebagai input kedua.

↑         -- 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

Arang , 33 byte

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

NθNη

Input Bdan k.

≔⁰ζ

Set zke 0.

W‹Lυη«

Ulangi sampai kita memiliki knilai.

≦⊕ζ

Penambahan z.

¿¬Φθ∧κ¬﹪ζ⊕κ

Bagilah zdengan semua angka dari 2ke Bdan lihat apakah ada yang tersisa adalah nol.

⊞υζ»

Jika tidak maka dorong zke daftar kosong yang telah ditentukan.

Iυ

Keluarkan daftar ke string dan secara implisit mengeluarkannya.


2

JavaScript (ES6), 68 byte

Mengambil input sebagai (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

Cobalah online!

Berkomentar

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

Jelly , 10 byte

1µg³!¤Ịµ⁴#

Cobalah online!

Bagaimana itu bekerja

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 karakter, 104 byte

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

Di atasnya tampak baris setelah 'r ← afw; saya' punya nama 1 2 3; tes:

  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│
└~────────────────────────────────────────┘

1

05AB1E , 9 byte

∞ʒÒ¹›P}²£

Cobalah secara online atau verifikasi semua kasus uji .

Penjelasan:

          # Infinite list starting at 1: [1,...]
 ʒ    }    # Filter it by:
  Ò        #  Get all prime factors of the current number
   ¹›      #  Check for each if they are larger than the first input
     P     #  And check if it's truthy for all of them
       ²£  # Leave only the leading amount of items equal to the second input
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.