Jika Anda pernah belajar tentang bilangan prima di kelas matematika, Anda mungkin harus, pada satu titik, menentukan apakah bilangan prima. Anda mungkin telah mengacaukan saat Anda masih mempelajarinya, misalnya, salah mengira sebagai perdana. Nah, jangan khawatir, karena 39 adalah semiprime, yaitu bahwa itu adalah produk dari dua bilangan prima.
Demikian pula, kita dapat mendefinisikan prime k- hampir sebagai produk dari bilangan k prime. Misalnya, 40 adalah 4 4-hampir prima; 40 = 5 * 2 * 2 * 2, produk dari 4 faktor.
Tugas Anda adalah untuk menulis sebuah program / fungsi yang menerima dua bilangan bulat n dan k sebagai input dan output / mengembalikan n th k -hampir bilangan prima. Ini adalah kode-golf, sehingga program terpendek dalam byte menang.
Uji kasus
n, k => output
n, 1 => the nth prime number
1, 1 => 2
3, 1 => 5
1, 2 => 4
3, 2 => 9
5, 3 => 27
Lain-lain
Anda harus membuat bilangan prima sendiri dengan cara apa pun selain bentuk tertutup sederhana, jika ada bentuk tertutup seperti itu.
f
dalam half[n,1]
ini benar, karena daftar bilangan prima hampir berisi angka ganjil (misalnya dua contoh terakhir, yang tidak dapat diungkapkan sebagai produk dari kekuatan dua dan bilangan prima). (Dan dikatakan juga demikianf[n,1] == 2*f[n,1]
.)Jawaban:
Pyth, 9 byte
Penjelasan
Coba di sini!
Atau coba test suite!
sumber
Brachylog , 9 byte
Mengalahkan @sundar dengan menggunakan setengah byte
Penjelasan
Cobalah online!
sumber
Pyke (komit 29), 8 byte (tidak kompetitif)
Penjelasan:
sumber
Julia,
84785957 byteIni adalah fungsi rekursif yang menerima dua bilangan bulat dan mengembalikan bilangan bulat. Pendekatan di sini adalah untuk memeriksa jumlah eksponen dalam faktorisasi utama terhadap
k
.Tidak Disatukan:
sumber
Jelly, 9 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Brachylog , 18 byte
Cobalah online!
sumber
Mathematica,
5651 bytePeringatan: Ini teoretis. Jangan lari untuk nilai apa pun> 4. Ganti 2 ^ ## dengan ekspresi yang lebih efisien.
sumber
n=1
.PrimeOmega[1]
dievaluasi menjadi0
,&&#>1
adalah mubazir.Mathematica,
5349 BytesMenghasilkan daftar bilangan bulat berdasarkan batas atas yang longgar.
PrimeOmega
menghitung faktor prima dengan multiplisitas, perdana k- hampirCases
diambil dari daftar, dan anggota ke- n dari subset tersebut dikembalikan.sumber
2^Sequence[1,2]
untuk melihat mengapa yang terakhir gagal.Haskell, 88 byte
Mungkin bisa bermain golf lebih banyak, karena saya masih pemula di Haskell. Fungsi
q
mengembalikan jumlah faktor argumennya, danf
menggunakannya untuk mengambilnth
elemen daftar yang dibuat dari semua angka yang memilikik
faktor.sumber
MATL, 14 byte
Cobalah di MATL Online
sumber
Python 3, 100 byte
Ini adalah fungsi brute force yang sangat sederhana. Ia memeriksa setiap nomor mulai dari 2 dengan
sympy
'sfactorint
fungsi sampai telah menemukann
k
bilangan prima-hampir, di mana titik, fungsi mengembalikann
th ini.Tidak Disatukan:
Saya menggunakan
sum(factorint(a).values())
karenafactorint
mengembalikan kamusfactor: exponent
berpasangan. Meraih nilai-nilai dari kamus (eksponen) dan menjumlahkan mereka memberitahu saya berapa banyak faktor prima ada dan dengan demikian apak
inik
prime-hampir adalah.sumber
Python 2 , 76 byte
Cobalah online!
sumber