Tidak, maksud saya bukan ϕ = 1.618...
dan π = 3.14159...
. Maksud saya fungsinya .
- φ (x) adalah jumlah bilangan bulat kurang dari atau sama dengan
x
yang relatif primax
. - π (x) adalah jumlah bilangan prima yang kurang dari atau sama dengan
x
. - Katakanlah "bukan pi" adalah π̅ (x) dan tetapkan itu sebagai jumlah komposit yang kurang dari atau sama dengan
x
.
Tugas
Dengan bilangan bulat yang benar-benar positif x
, hitung φ (π̅ (x)) . Skor dalam byte.
Contohnya
Setiap baris terdiri dari input (dari 1 hingga 100, inklusif) dan output terkait dipisahkan oleh spasi.
1 0
2 0
3 0
4 1
5 1
6 1
7 1
8 2
9 2
10 4
11 4
12 2
13 2
14 6
15 4
16 6
17 6
18 4
19 4
20 10
21 4
22 12
23 12
24 6
25 8
26 8
27 16
28 6
29 6
30 18
31 18
32 8
33 12
34 10
35 22
36 8
37 8
38 20
39 12
40 18
41 18
42 12
43 12
44 28
45 8
46 30
47 30
48 16
49 20
50 16
51 24
52 12
53 12
54 36
55 18
56 24
57 16
58 40
59 40
60 12
61 12
62 42
63 20
64 24
65 22
66 46
67 46
68 16
69 42
70 20
71 20
72 32
73 32
74 24
75 52
76 18
77 40
78 24
79 24
80 36
81 28
82 58
83 58
84 16
85 60
86 30
87 36
88 32
89 32
90 48
91 20
92 66
93 32
94 44
95 24
96 70
97 70
98 24
99 72
100 36
Gunakan tautan ini untuk menghitung output yang diharapkan untuk input apa pun. Juga, daftar input dan output x <= 1000
disediakan di sini pada pastebin . (Dihasilkan dengan program Minkolang ini .)
Papan peringkat
Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard biasa dan gambaran umum pemenang berdasarkan bahasa.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
## Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Misalnya:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
## Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
sumber
Jawaban:
GS2 ,
1210 byteKode sumber menggunakan pengkodean CP437 . Cobalah online!
Uji coba
Bagaimana itu bekerja
sumber
Regex (.NET),
122113 byteDengan asumsi input dan output dalam kondisi unary, dan output diambil dari pertandingan utama regex.
Rincian regex:
^(?=((?=.*$(?<=^(\3+(.+.))(.*?(?>(.\4)?)))).)+(.*))
menghitung π̅ (x) dan menangkap sisa string dalam menangkap grup 6 untuk pernyataan di bagian kedua..*$
set pointer ke ujung string sehingga kita memiliki seluruh bilanganx
dalam satu arah.(?<=^(\3+(.+.))(.*?(?>(.\4)?)))
cocok dari kanan ke kiri dan memeriksa nomor komposit dengan menggeser dari x ke 0.(.*?(?>(.\4)?))
adalah "variabel" yang dimulai dari 0 pada iterasi pertama dan berlanjut dari angka pada iterasi sebelumnya dan loop hingga x. Karena angka komposit terkecil adalah 4,(.\4)?
tidak pernah gagal untuk mencocokkan jika menangkap grup 4 tersedia.^(\3+(.+.))
memeriksa apa yang ditinggalkan oleh "variabel" di atas (yaitux - "variable"
) apakah itu adalah angka komposit.((?=.*(?=\6$)(?<=(?!(.+.)\8*(?=\6$)(?<=^\8+))(.+?(?>\9?)))).)+
menghitung φ (π̅ (x)), dengan membatasi operasi kiri-ke-kanan dengan(?=\6$)
..*(?=\6$)
mengatur pointer ke posisi π̅ (x). Mari kita tunjukkan y = π̅ (x).(?<=(?!(.+.)\8*(?=\6$)(?<=^\8+))(.+?(?>\9?)))
cocok dari kanan ke kiri dan memeriksa prime relatif dengan pengulangan dari (y - 1) ke 0(.+?(?>\9?))
adalah "variabel" yang dimulai dari 1 pada iterasi pertama dan berlanjut dari angka pada iterasi sebelumnya dan loop hingga y(?!(.+.)\8*(?=\6$)(?<=^\8+))
cocok dari kiri ke kanan 1 dan memeriksa apakah "variabel" dan y relatif prima.(.+.)\8*(?=\6$)
mengambil pembagi "variabel" yang lebih besar dari 1, dan efek sampingnya adalah kita memiliki bilangan bulat y di sebelah kiri.(?<=^\8+)
memeriksa apakah pembagi "variabel" juga merupakan pembagi y.1 Dalam. NET, lihat-depan menetapkan arah ke LTR alih-alih mengikuti arah saat ini; look-behind mengatur arah ke RTL alih-alih membalikkan arah.
Uji regex di RegexStorm .
Revisi 2 menjatuhkan grup yang tidak menangkap dan menggunakan grup atom alih-alih sintaksis bersyarat.
sumber
J,
1514 byteIni adalah kata kerja monadik diam-diam. Cobalah online dengan J.js .
Bagaimana itu bekerja
sumber
Serius , 27 byte
Yay, saya mengalahkan CJam! Cobalah online
Penjelasan (
a
merujuk ke atas tumpukan,b
mengacu pada kedua-dari-atas):Catatan: sejak posting jawaban ini, saya telah menambahkan fungsi pi dan phi ke Serius. Berikut adalah jawaban yang tidak bersaing dengan fungsi-fungsi tersebut:
Penjelasan (beberapa perintah dialihkan untuk tidak tumpang tindih dengan yang lain):
sumber
Julia,
5250 byteIni menciptakan fungsi tanpa nama yang menerima dan integer dan mengembalikan integer. Untuk menyebutnya, berikan nama, mis
f=x->...
.Tidak Disatukan:
sumber
sum
alih-alihcount
untuk menyimpan beberapa karakter. Ini sedikit frustasi, meskipun - cara lain untuk menghitung bilangan prima,,sum(isprime,1:x)
persis sama panjangnyaendof(primes(x))
.sum
gagal untuk koleksi kosong sambilcount
mengembalikan 0. Dengan demikiansum
tidak akan menghasilkan hasil yang diinginkanx<4
.Mathematica, 24 byte
sumber
PhiNotPi@#&
: 11 byte: PPyth, 14 byte
Demonstrasi , Penguji
Kami menghitung komposit menggunakan filter sederhana, mengambil panjangnya, dan menyimpannya
J
. Kemudian, kami mengambil gcd dariJ
setiap angka hinggaJ
, dan menghitung berapa hasil yang sama dengan 1.sumber
Minkolang 0,11 , 12 byte (TIDAK kompetitif)
Jawaban ini BUKAN kompetitif. Saya menerapkan pi dan phi sebagai built-in sebelum saya memposting pertanyaan, yang memberi saya keuntungan yang tidak adil. Saya memposting ini hanya untuk mereka yang tertarik dengan bahasa ini.
Coba di sini.
Penjelasan
sumber
CJam, 28 byte
Cobalah biola ini dalam juru bahasa CJam atau verifikasi semua kasus uji sekaligus .
Bagaimana itu bekerja
sumber
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
. Apakah itu benar?Python, 137
139sumber
range(n) if
dan])) if
Retina , 48 byte
Cobalah online!
Penjelasan
Konversikan input ke unary.
Hitung bilangan komposit tidak lebih besar dari input dengan menghitung seberapa sering kita dapat mencocokkan string yang terdiri dari setidaknya dua pengulangan faktor minimal 2.
Konversikan ke unary lagi.
Hitung φ dengan menghitung dari berapa banyak posisi tidak mungkin untuk menemukan faktor (minimal 2) akhiran dari posisi itu yang juga merupakan faktor awalan (jika kita menemukan faktor seperti itu maka ini
i <= n
berbagi faktor dengann
Oleh karena itu tidak coprime untuk itu). Pada.
akhirnya memastikan bahwa kita tidak menghitung nol (yang mana kita tidak dapat menemukan faktor minimal 2).sumber
Regex (.NET),
8886 byteCobalah online! (Sebagai program Retina.)
Menggunakan I / O yang sama dengan jawaban n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ , yaitu input unary dan cocok dengan substring dari panjang hasil.
Dimungkinkan untuk mempersingkat ini lebih jauh dengan mengganti satu atau kedua kelompok penyeimbang dengan referensi ke depan.
Alternatif pada jumlah byte yang sama:
Ada juga beberapa alternatif untuk paruh pertama, misalnya menggunakan lookahead negatif daripada yang positif untuk bilangan komposif, atau menggunakan kondisional di sana juga.
Penjelasan
Saya akan berasumsi bahwa Anda memiliki pemahaman dasar tentang menyeimbangkan grup , tetapi singkatnya, menangkap grup di .NET adalah tumpukan (jadi setiap kali Anda menggunakan kembali grup penangkap, tangkapan baru didorong di atas) dan
(?<-x>...)
mengeluarkan tangkapan dari tumpukanx
. Itu sangat membantu untuk menghitung hal-hal.sumber
PARI / GP, 27 byte
sumber
Jelly , tidak bersaing
7 byte Jawaban ini tidak bersaing, karena menggunakan bahasa yang mengatasi tantangan.
Bagaimana itu bekerja
sumber
Oktaf,
5251Sunting: disimpan 1 byte berkat Thomas Kwa
Penjelasan:
sumber
PARI / GP, 35 byte
sumber
SageMath 26 byte
Bekerja dengan baik bahkan untuk
n=0
dann=1
, berkat implementasi Sage.sumber
Jelly , 6 byte
Cobalah online!
Ini adalah kolaborasi antara caird coinheringahhing dan Mr. Xcoder dalam obrolan
Penjelasan
sumber
Gaia , 5 byte
Cobalah online!
sumber
Ohm v2 , 7 byte
Cobalah online!
sumber
MATL , 9 byte (tidak bersaing)
Jawaban ini tidak bersaing, karena bahasa memposting tantangan.
Menggunakan versi (10.1.0) dari bahasa / kompiler.
Cobalah online!
Penjelasan
sumber
GAP, 33 Bytes
Number(l,p)
menghitung berapa banyak elemen daril
memuaskanp
. Untuk mengimbangi fakta bahwa 1 bukan prima atau komposit, saya harus mengurangi dari satu lebih dari jumlah bilangan prima hingga n. Alih-alih melakukan-1
dua byte, saya memulai daftar dengan -2 bukan 1 atau 2, sehingga menambahkan satu nomor lagi yang dianggap prima olehIsPrime
hanya satu byte tambahan.sumber
Python 3.5 - 130 byte
Jika tidak dapat diterima untuk melewati fungsi sebagai p (n, 0,0) maka +3 byte.
Ini mengambil keuntungan dari fakta bahwa saya menggunakan teorema Wilson untuk memeriksa apakah suatu bilangan adalah gabungan dan harus memanggil ke dalam modul matematika untuk fungsi faktorial. Python 3.5 menambahkan fungsi gcd ke dalam modul matematika.
Loop pertama dari kode akan bertambah satu per satu jika angkanya komposit dan bertambah 0 dengan cara lain. (Meskipun teorema Wilson hanya berlaku untuk bilangan bulat lebih besar dari 1, itu memperlakukan 1 sebagai bilangan prima, jadi memungkinkan kita untuk mengeksploitasi ini).
Loop kedua kemudian akan mengulangi rentang jumlah komposit dan kenaikan g hanya ketika nilai bukan pi dan l adalah co-prime.
g kemudian jumlah nilai kurang dari atau sama dengan jumlah bilangan komposit kurang dari atau sama dengan n.
sumber
Python 3 + sympy ,
5958 byte* -1 byte dengan mengganti
compositepi(k)
dengank+~primepi(k)
.Cobalah online!
sumber
05AB1E ,
118 byteCobalah online!
Ini mungkin tidak bersaing - saya tidak bisa mengetahui kapan 05AB1E dibuat.
Bagaimana itu bekerja
sumber
Pyt , 6 byte
Penjelasan:
Cobalah online!
sumber
APL NARS, 38 byte, 19 karakter
13π adalah fungsi totient dan 2π adalah fungsi prime count <= argumennya. Uji
sumber
Tambahkan ++ , 21 byte
Cobalah online!
Bagaimana itu bekerja
R
þP
þ
P
bL
1_
dR
Þ%
bL
G
!!
Ya, saya benar-benar ingin mencoba LaTex baru
sumber