Kaba sayılar üretin


15

Arka fon

Birincil faktörlerin tümü kesinlikle aşılıyorsa bir sayı - nolarak tanımlanabilir .BnB

Meydan okuma

İki pozitif tamsayı verildi Bve kilk k Bsayılar çıktı .

Örnekler

Izin vermek f(B, k)ilk fonksiyon içeren seti döndüren bir fonksiyon olsun 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
Mücadeleyi detaylandırabilir misiniz? Anlamıyorum. Belki örnekleri açıklayabilir misiniz?
db

Hiç cevap vermediğinizde neden tüm cevaplarınıza 1 eklediğinizi anlamıyorum B?
kamoroso94

1
1'in hiçbir asal faktörü yoktur, bu nedenle 1'in her asal faktörü B'den daha büyüktür ve 1, B'den bağımsız çıktıda görünmelidir
Hood

@db Asal olarak çarpanlara ayırın n. Eğer bu primerlerin hepsi büyükse B, n B-indir.
Addison Crump

@AddisonCrump Mesela 35 için asal 5 ve 7 olduğundan, 35 4 kaba mu? Bu bilinen bir terminoloji mi? Daha önce hiç duymadım. Hala örnekler altında değilim, özellikle de sonuncusu. 14 sayı ama 10 nedir?
db

Yanıtlar:


5

Haskell , 53 44 bayt

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

Çevrimiçi deneyin!

-9 baytlık H.PWiz'e teşekkürler !

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.


@ H.PWiz Doğru, bir şekilde sadece -parçayı kavrayışın (>b)içine almayı düşündüm (işe yaramaz) ama tersi değil. Teşekkürler!
Laikoni

5

Python 3 , 80 , 75 bayt

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

Çevrimiçi deneyin!

5 bayt tasarruf için shooqie teşekkürler .

Bu k'th B kaba sayı hiçbir zaman aşmaz varsayar B*k ı kanıtlamak için nasıl bilmiyorum, ama (ve herhangi counterexamples bulamıyorum) oldukça güvenli varsayım gibi görünüyor.

Alternatif çözüm:

Python 2 , 78 bayt

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

Çevrimiçi deneyin!

Bu çözüm yok değil yukarıdaki çözüm olun. Ve çok daha verimlidir.


3
Hmm, bu varsayım muhtemelen doğrulanabilir, ancak yine de ilginç bir sorun. Kanıt için ödül kazanacağım.
Addison Crump

1
Neden olmasın 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 Kulağa hoş geliyor. Ayrıca bkz. Math.stackexchange.com/questions/2983364/…
Anush

@Anal Ne yazık ki, kanıtım işe yaramadı, çünkü bir hata yaptım
Black Owl Kai


3

Perl 6 , 35 32 bayt

Nwellnof sayesinde -3 bayt!

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

Çevrimiçi deneyin!

İki tamsayı alan ve bir tamsayı listesi döndüren anonim bir kod bloğu.

açıklama

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

Ne yapar all?
Addison Crump

1
@AddisonCrump listedeki alltüm öğelerin doğru olup olmadığını kontrol eder. Kısaca her şey için bir açıklama ekleyeceğim
Jo King

@nwellnhof Vay canına! Bu yüzden Kavşaklar bunun için yararlıdır!
Jo King

Evet, [&]bunun yerine de kullanabileceğinizi unutmayın all.
nwellnhof

@AddisonCrump Sanırım allartık bu şekilde kullanılmıyor, bu yüzden cevabımı güncellemeliyim. allaralıktaki değerlerin bir Kavşağını oluşturur ve Kavşak üzerinde yapılan 2..btüm işlemler eş zamanlı olarak tüm değerlerde gerçekleştirilir. Tarafından Boole bağlamında değerlendirildiğinde grep, bu, Kavşaktaki tüm değerlerin doğru olup olmadığına, yani sıfır olmayana dalar
Jo King

3

Kabuk , 9 8 bayt

↑foΛ>⁰pN

Çevrimiçi deneyin!

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

Kömür , 33 bayt

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

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı versiyonudur. Açıklama:

NθNη

Giriş Bve k.

≔⁰ζ

z0 olarak ayarlayın .

W‹Lυη«

kDeğerlerimiz olana kadar tekrarlayın .

≦⊕ζ

Artış z.

¿¬Φθ∧κ¬﹪ζ⊕κ

Böl ztüm sayılarla 2için Bherhangi kalan sıfırsa ve gör.

⊞υζ»

Değilse z, önceden tanımlanmış boş listeye basın.

Iυ

Listeyi dizeye yayınlayın ve dolaylı olarak çıktı alın.


2

JavaScript (ES6), 68 bayt

Girişi alır (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

Çevrimiçi deneyin!

Yorumlananlar

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

Jöle , 10 bayt

1µg³!¤Ịµ⁴#

Çevrimiçi deneyin!

Nasıl çalışır

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 bayt

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

Yukarıda 'r ← afw; i' den sonraki satırların isimleri var 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│
└~────────────────────────────────────────┘

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.