Dengan bilangan bulat positif n , hitung nilai fungsi Mertens M ( n ) di mana
dan μ ( k ) adalah fungsi Möbius di mana μ ( k ) = 1 jika k memiliki bilangan genap faktor prima yang berbeda, -1 jika k memiliki bilangan prima dari faktor prima yang berbeda, dan 0 jika faktor prima tidak berbeda.
- Ini adalah kode-golf jadi buat kode terpendek untuk fungsi atau program yang menghitung fungsi Mertens untuk bilangan bulat input n > 0.
- Ini adalah urutan OEIS A002321 .
Uji Kasus
n M(n)
1 1
2 0
3 -1
4 -1
5 -2
6 -1
7 -2
8 -2
9 -2
10 -1
117 -5
5525 5
7044 -25
8888 4
10000 -23
Jawaban:
Jelly , 6 byte
Cobalah online! atau verifikasi kasus uji yang lebih kecil . (butuh beberapa saat)
Latar Belakang
Ini menggunakan properti
dari A002321 , yang mengarah ke rumus rekursif berikut.
Bagaimana itu bekerja
sumber
Mathematica,
2220 byteTerima kasih kepada @miles karena telah menghemat 2 byte.
Penjelasan
Buat daftar dari 1 hingga masukan.
Temukan
MoebiusMu
setiap nomorJumlahkan hasilnya.
sumber
Python 2,
4537 byteUji di Ideone .
Latar Belakang
Ini menggunakan properti
dari A002321 , yang mengarah ke rumus rekursif berikut.
Bagaimana itu bekerja
Kami menggunakan rekursi tidak hanya untuk menghitung M untuk quotients, tetapi untuk menghitung jumlah gambar-gambar itu juga. Ini menghemat 8 byte dari implementasi langsung berikut ini.
Ketika f dipanggil dengan argumen tunggal n , argumen opsional k default ke 2 .
Jika n = 1 ,
n<k
hasilkan Benar dan f mengembalikan nilai ini. Ini adalah kasus dasar kami.Jika n> 1 ,
n<k
awalnya mengembalikan False dan kode berikutor
dijalankan.f(n/k)
secara rekursif menghitung satu istilah dari jumlah tersebut, yang dikurangkan dari nilai pengembalianf(n,k+1)
. Kenaikan terakhir k dan panggilan f , sehingga iterating nilai-nilai yang mungkin k . Setelah n <k + 1 atau n = 1 ,f(n,k+1)
akan mengembalikan 1 , mengakhiri rekursi.sumber
05AB1E ,
1615 bytePenjelasan
Cobalah online!
sumber
Brachylog ,
2220 byteCobalah online!
Penjelasan
sumber
Jelly , 9 byte
Cobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
Haskell,
2927 bytesumber
Jelly , 7 byte
Tidak terlalu efisien; penentu sulit.
Cobalah online! atau verifikasi kasus uji yang lebih kecil . (butuh beberapa saat)
Latar Belakang
Ini menggunakan rumus dari A002321 :
M (n) adalah penentu matriks Boolean A n × n , di mana a i, j adalah 1 jika j = 1 atau i | j , dan 0 sebaliknya.
Bagaimana itu bekerja
sumber
PHP, 113 byte
Sejauh yang saya tahu php tidak memiliki apa pun seperti fungsi bilangan prima jadi ini agak menyebalkan. Mungkin mungkin untuk melakukan yang lebih baik.
gunakan seperti:
sumber
Racket 103 byte
Tidak Disatukan:
sumber
CJam (20 byte)
Demo online
Menggunakan formula dari OEIS
dan operator memoising CJam
j
.Pembedahan
sumber
JavaScript (ES6), 50 byte
Jawaban Port of @ Dennis's Python.
sumber
Julia,
2625 byteCobalah online!
Latar Belakang
Ini menggunakan properti
dari A002321 , yang mengarah ke rumus rekursif berikut.
Bagaimana itu bekerja
Kami mendefinisikan kembali operator unary ! untuk tujuan kita.
n÷(2:n)
menghitung semua quotients yang diperlukan, kami didefinisikan ulang ! dipetakan di atas mereka, dan akhirnya jumlah semua panggilan rekursif dikurangi dari 1 .Sayangnya,
tidak bekerja karena jumlah diad akan tersedak koleksi kosong.
memperbaikinya, tetapi tidak menyimpan byte dan mengembalikan True untuk input 1 .
sumber
C,
51 5047 byteSunting: Berkat @ Dennis untuk -3 byte!
sumber
Scala, 53 byte
Port jawaban pythin Dennis.
Saya telah memanggil metode
?
, yang merupakan token yang tidak menempel pada huruf.sumber
Pyth, 12 byte
Menentukan fungsi
y
yang mengambil dalamn
.Test suite di sini. (Perhatikan bahwa trailing di
y
sini sebenarnya untuk memanggil fungsi yang dideklarasikan.)sumber
Sebenarnya,
181716 byteSaran bermain golf diterima. Cobalah online!
Tidak melakukanolf
sumber
PARI / GP, 24 byte
sumber
J, 19 byte
Menghitung fungsi Mertens untuk
n
menggunakan jumlah fungsi Möbius pada rentang tersebut[1, n]
.Pemakaian
Penjelasan
sumber