Definisi
Fungsi Euler Phi ( fungsi totient AKA ): fungsi yang mengambil dalam jumlah positif dan mengembalikan jumlah angka positif kurang dari jumlah yang diberikan yang co-prime dengan nomor yang diberikan. Ini dilambangkan sebagai
φ(n)
.Nomor yang dapat dijangkau : jika ada bilangan bulat positif
x
sedemikian rupaφ(x) == n
, makan
dapat dijangkau .
Tugas
Tulis fungsi / program untuk menentukan apakah bilangan bulat positif tertentu dapat dijangkau.
Memasukkan
Angka positif, dalam format apa pun yang masuk akal. Orang dapat berasumsi bahwa angka itu dalam kemampuan bahasa. Masukan unary diterima.
Keluaran
Dua nilai yang konsisten, satu untuk angka yang dapat dijangkau, dan yang lainnya untuk angka yang tidak terjangkau. Dua nilai itu bisa apa saja, asalkan konsisten.
Testcases
Angka yang dapat dijangkau di bawah 100
adalah:
1, 2, 4, 6, 8, 10, 12, 16, 18, 20, 22, 24, 28, 30, 32, 36, 40, 42, 44, 46, 48, 52, 54, 54, 56, 58, 60, 64, 66, 70, 72, 78, 80, 82, 84, 88, 92, 96
( A002202 tentang OEIS)
Aturan
Celah standar berlaku.
Kriteria menang
Ini adalah kode-golf . Pengiriman dengan kemenangan byte-hitungan terendah.
Referensi
sumber
phi(n) = count { m : 1 <= m <= n AND (m,n) are coprime }
.. apakah itu benar?Jawaban:
Jelly ,
76 byteTidak terlalu cepat. Mengembalikan 1 atau 0 .
Cobalah online!
Bagaimana itu bekerja
sumber
Mathematica, 28 byte
Seperti jawaban Jelly Dennis, kami menghitung nilai φ dari semua angka hingga kuadrat input dan melihat apakah input muncul di dalamnya. Kembali
False
jika input dapat dijangkau danTrue
jika tidak. Ya, itu membingungkan. TetapiFreeQ
satu byte lebih pendek dariMatchQ
, dan hei, spec mengatakan dua nilai yang konsisten> :)sumber
JavaScript (ES6),
9082 bytePengembalian
0
atautrue
.Ini didasarkan pada asumsi bahwa jika x ada maka x ≤ 2n . Jika terbukti salah, ini harus diperbarui untuk digunakan
x=n*n
sebagai gantinyax=n*2
(ukuran yang sama, jauh lebih lambat).Kasing tepi adalah n = 128 yang mengharuskan untuk menghitung ϕ (255) .
Demo
Tampilkan cuplikan kode
sumber
n=2
,n=8
,n=128
,n=32768
dann=2147483648
.Aksioma, 56 byte
saya tidak tahu apakah itu benar ... kode uji dan hasil
Rentang 1 .. (2 * x) akan ok hingga input x = 500 ...
sumber
Pari / GP , 34 byte
Mengembalikan
0
jika terjangkau,1
jika tidak.Cobalah online!
sumber
05AB1E , 5 byte
Penjelasan:
Cobalah online!
sumber
05AB1E ,
1312 byteEDIT : Menyimpan byte karena input digunakan kembali jika stack tidak memiliki cukup elemen.
Output 1 jika terjangkau, 0 jika tidak.
Bergantung pada asumsi bahwa x ≤ 2n jika ada.
Cobalah online!
Bagaimana itu bekerja
sumber
C, 123 byte
Coba Online
sumber