Bilangan sekunder adalah bilangan bulat positif yang faktor prima (tanpa multiplisitas) semuanya kurang dari atau sama dengan akar kuadratnya. 4
adalah angka sekunder, karena satu-satunya faktor prima adalah 2
, yang sama dengan akar kuadratnya. Namun, 15
bukan angka sekunder, karena memiliki 5
sebagai faktor utama, yang lebih besar dari akar kuadratnya ( ~ 3.9
). Karena semua bilangan prima memiliki dirinya sendiri sebagai faktor prima, tidak ada bilangan prima adalah bilangan sekunder. Beberapa angka sekunder pertama adalah sebagai berikut:
1, 4, 8, 9, 12, 16, 18, 24, 25, 27, 30, 32, 36, 40, 45, 48, 49, 50, 54, 56
Angka tersier didefinisikan dengan cara yang sama, kecuali semua faktor prima harus kurang dari atau sama dengan akar pangkat tiga. Beberapa nomor tersier pertama adalah sebagai berikut:
1, 8, 16, 27, 32, 36, 48, 54, 64, 72, 81, 96, 108, 125, 128, 135, 144, 150, 160, 162
Secara umum, bilangan n-ary adalah bilangan yang faktor prima semuanya kurang dari atau sama dengan akar ke-nnya. Jadi, bilangan bulat positif adalah angka -ary jika masing-masing faktor utamanya memenuhi . Dengan demikian, bilangan primer semuanya bilangan bulat positif (semua faktor prima kurang dari atau sama dengan diri mereka sendiri), bilangan kuarter memiliki semua faktor prima kurang dari atau sama dengan akar keempat, dan seterusnya.p p n ≤ xn
Tantangan
Mengingat bilangan bulat k
dan n
sebagai masukan, keluaran k
th n
nomor -ary. k
mungkin nol atau satu-diindeks (pilihan Anda), dan n
akan selalu positif.
Contohnya
Ini adalah 20 elemen pertama dalam setiap urutan hingga angka 10-ary:
Primary: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
Secondary: 1, 4, 8, 9, 12, 16, 18, 24, 25, 27, 30, 32, 36, 40, 45, 48, 49, 50, 54, 56
Tertiary: 1, 8, 16, 27, 32, 36, 48, 54, 64, 72, 81, 96, 108, 125, 128, 135, 144, 150, 160, 162
Quarternary: 1, 16, 32, 64, 81, 96, 108, 128, 144, 162, 192, 216, 243, 256, 288, 324, 384, 432, 486, 512
5-ary: 1, 32, 64, 128, 243, 256, 288, 324, 384, 432, 486, 512, 576, 648, 729, 768, 864, 972, 1024, 1152
6-ary: 1, 64, 128, 256, 512, 729, 768, 864, 972, 1024, 1152, 1296, 1458, 1536, 1728, 1944, 2048, 2187, 2304, 2592
7-ary: 1, 128, 256, 512, 1024, 2048, 2187, 2304, 2592, 2916, 3072, 3456, 3888, 4096, 4374, 4608, 5184, 5832, 6144, 6561
8-ary: 1, 256, 512, 1024, 2048, 4096, 6561, 6912, 7776, 8192, 8748, 9216, 10368, 11664, 12288, 13122, 13824, 15552, 16384, 17496
9-ary: 1, 512, 1024, 2048, 4096, 8192, 16384, 19683, 20736, 23328, 24576, 26244, 27648, 31104, 32768, 34992, 36864, 39366, 41472, 46656
10-ary: 1, 1024, 2048, 4096, 8192, 16384, 32768, 59049, 62208, 65536, 69984, 73728, 78732, 82944, 93312, 98304, 104976, 110592, 118098, 124416
ÆfṪ*³<‘
karena kita tahu bahwa jika ada faktor yang memalsukanẠ
yang ada di sebelah kanan.Brachylog , 21 byte
Cobalah online!
Jawaban ini satu-diindeks.
Penjelasan
sumber
JavaScript (ES7),
9590 byteSangat cepat tetapi sayangnya dibatasi oleh jumlah rekursi maksimum.
Bagaimana itu bekerja
Daripada memfaktorkan bilangan bulat i dan memverifikasi bahwa semua faktor utamanya kurang dari atau sama dengan x = lantai (i 1 / n ) , kami mencoba untuk memvalidasi asumsi yang terakhir secara langsung. Itulah tujuan fungsi dalam F () :
Kami memeriksa apakah ada bilangan bulat d di [2 ... i 1 / n ] membagi i . Jika tidak, asumsi tersebut tidak valid dan kami mengembalikan 1 . Jika ya, kami mengulangi proses pada i = i / d secara berulang sampai gagal atau bilangan bulat awal sepenuhnya difaktorkan ( i == 1 ), dalam hal ini kami mengurangi k . Pada gilirannya, fungsi luar f () disebut secara rekursif hingga k == 0 .
Catatan: Karena kesalahan pembulatan titik mengambang seperti
125**(1/3) == 4.9999…
, nilai aktual yang dihitung untuk x adalah lantai ((i + 1) 1 / n ) .Demo
(Di sini dengan versi ES6 97-byte untuk kompatibilitas yang lebih baik.)
Tampilkan cuplikan kode
sumber
JavaScript (ES7),
9379 byteSaya tidak dapat memahami jawaban Arnauld jadi saya menulis sendiri dan mudahnya dua byte lebih pendek. Sunting: Disimpan 14 byte dengan bantuan dari @ETHproductions. Tidak Disatukan:
sumber
++i**(1/n)
daripadai**(1/n)
karena kesalahan pembulatan titik mengambang seperti125**(1/3) == 4.999...
. (Cara ini ditulis, saya pikir kode Anda tidak terpengaruh oleh ini.)m
untuk mencukur dua byte lebih lanjut.Haskell, 86 byte
Penjelasan:
(
%%%%
menunjukkan kode dari baris di atas)sumber
filter
dengan lambda jarang terbayar, daftar pemahaman biasanya lebih pendek:m#n=(0:1:[k|k<-[2..],last[n|n<-[2..k],all((>0).rem n)[2..n-1],k
remn<1]^n<=k])!!m
.0:
, karena pengindeksan dapat berbasis 0.m#n=[k|k<-[1..],last[n|n<-[1..k],all((>0).rem n)[2..n-1],k
remn<1]^n<=k]!!m
Pyth, 13 byte
Cobalah online.
Bekerja sangat mirip dengan solusi Jelly.
sumber
Perl 6, 88 byte
Wawasan yang tidak disengaja saya adalah bahwa Anda tidak perlu melihat setiap faktor
n
, hanya faktor terbesar, yangf
dihitung oleh fungsi internal . Sayangnya, ini menghancurkan stack dengan input yang lebih besar.Robustness dapat ditingkatkan dengan menambahkan tes primality, menggunakan
is-prime
metode bawaan pada Ints, dengan biaya beberapa karakter lagi.sumber
Sekam , 10 byte
Cobalah online!
Penjelasan
Butuh beberapa waktu untuk mencari tahu menggunakan
→
pada daftar kosong kembali1
bukan-Inf
untuk▲
yang daun1
dalam daftar (sebaliknya yang akan biaya 2 byte untuk tambahkan lagi):sumber
R, 93 byte
Diindeks nol.
Ini adalah fungsi rekursif yang terus berjalan sampai menemukan nomor berikutnya dalam barisan. Menggunakan
numbers
paket untuk menemukan faktor utama.sumber
MATL, 21 byte
Solusi ini menggunakan satu berbasis pengindeksan dan input
n
dank
masing-masing.Cobalah secara Online!
Penjelasan
sumber
~
untuk mengubah input kedua :-)Brachylog v2 , 16 byte
Cobalah online!
Kredit untuk solusi Jelly Dennis untuk mendapatkan saya berpikir ke arah yang benar.
Penjelasan
Berikut ini adalah versi yang sedikit tidak digubah yang lebih mudah diurai:
Predikat pembantu (baris 2): input adalah eksponen n , output tidak dibatasi:
Predikat utama (baris 1): input adalah daftar yang berisi indeks k (1-based) dan eksponen n ; output tidak dibatasi:
sumber
APL (NARS), 53 karakter, 106 byte
uji:
sumber
Python 2 , 114 byte
Cobalah online!
Fungsi 1-diindeks.
sumber
Japt , 14 byte
Dibawa
n
sebagai input pertama dank
(1-diindeks) sebagai yang kedua.Cobalah
sumber