Jika 1 tidak dihitung sebagai faktor, maka
- 40 memiliki dua faktor tetangga (4 dan 5)
- 1092 memiliki dua faktor tetangga (13 dan 14)
- 350 tidak memiliki dua faktor tetangga (dari faktor 2, 5, 7, 10, 14, 25, 35, 50, 70, dan 175, tidak ada yang berurutan)
Proporsi bilangan bulat positif yang memiliki properti ini adalah proporsi yang dapat dibagi oleh 6 (2 × 3), 12 (3 × 4), 20 (4 × 5), 30, 56,…. Jika kita hanya menghitung proporsi yang dapat dibagi dengan n pertama , kita mendapatkan perkiraan yang menjadi lebih akurat dengan meningkatnya n .
Misalnya, untuk n = 1 , kami menemukan proporsi bilangan bulat yang dapat dibagi dengan 2 × 3 = 6, yaitu 1/6. Untuk n = 2 , semua bilangan bulat dapat dibagi 3 × 4 = 12 juga dapat dibagi 6, sehingga perkiraannya masih 1/6. Untuk n = 3 , proporsi bilangan bulat yang dapat dibagi 6 atau 20 adalah 1/5, dan seterusnya.
Berikut adalah beberapa nilai pertama:
1 1/6 0.16666666666666666
3 1/5 0.20000000000000000
6 22/105 0.20952380952380953
9 491/2310 0.21255411255411255
12 2153/10010 0.21508491508491510
15 36887/170170 0.21676558735382265
21 65563/301070 0.21776663234463747
24 853883/3913910 0.21816623274423785
27 24796879/113503390 0.21846817967287144
Untuk nilai n antara nilai yang disediakan, output harus sama dengan output untuk nilai di atas (misalnya n = 5 → 1/5).
Program Anda harus mengambil n dan menghasilkan fraksi atau jawaban desimal. Anda dapat mengambil n pada offset apa pun (mis. Pengindeksan 0 atau pengindeksan 2 ke dalam urutan ini, alih-alih pengindeksan 1).
Untuk output desimal, program Anda harus akurat setidaknya 5 digit untuk semua kasus uji yang diberikan.
Skor adalah kode-golf , dengan kode menang tercepat.
Terinspirasi oleh Berapa proporsi bilangan bulat positif memiliki dua faktor yang berbeda dengan 1? oleh marty cohen - khususnya, oleh jawaban Dan .
Jawaban:
Jelly ,
14 1310 byte-1 menggunakan ide Erik the Outgolfer untuk mengambil rata-rata dari daftar nol dan satu.
-3 dengan menggunakan 3-pengindeksan (sebagaimana diizinkan dalam pertanyaan) - terima kasih kepada Dennis untuk menunjukkan ini.
Tautan monadik yang menerima bilangan bulat
n+2
,, yang menghasilkan float.(Dimulai sebagai
+2µḊPƝḍⱮ!§T,$Ẉ
, mengambiln
dan menghasilkan[numerator, denominator]
, tidak direduksi)Bagaimana?
sumber
!
bukannyaæl/
... Ah, sukacita aturan berubah saat tidur.P
untuk turun ke 13?Ẹ€
? Saya takutP
sama׃1$
, jadi tidak akan berhasil. (Dan itu akan menjadi 14 toh ...) Jika bukanæl/
, mungkin (P
adalah LCM * k setelah semua).æl/
æl/
saya kira. (Golf malam-burung hantu memang memiliki masalah ...) EDIT: Ya, meskipun saya harus mengurangi argumen atas TIO menjadi4
...: P05AB1E , 15 byte
Port dari @JonathanAllan jawaban Jelly , jadi juga sangat lambat.
Cobalah secara online atau verifikasi tiga uji kasus pertama .
Penjelasan:
sumber
JavaScript (ES6),
94 9290 byteDisimpan 2 byte berkat @Shaggy + 2 byte lagi dari sana
Mengembalikan pendekatan desimal.
Cobalah online!
JavaScript (ES6), 131 byte
Cobalah online!
sumber
Jelly , 12 byte
Cobalah online!
-2 Berkat saran Jonathan Allan untuk mengganti LCM dengan produk (yaitu LCM dikalikan dengan integer).
Dennis memperhatikan bahwa saya dapat melakukan 2 indeks juga.
sumber
Arang , 26 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Sangat tidak efisien (O (n! ²)) sehingga hanya berfungsi hingga
n=4
pada TIO. Penjelasan:Input
n
dan hitungn
produk pertama dari faktor tetangga.Ambil produk dari semua faktor itu dan gunakan itu untuk menghitung proporsi angka yang memiliki setidaknya satu dari faktor-faktor itu.
30 byte versi yang lebih lambat hanya O (n!) Sehingga dapat dilakukan hingga
n=6
pada TIO:Cobalah online! Tautan adalah untuk mengucapkan versi kode.
Versi 46 byte yang lebih cepat hanya O (lcm (1..n + 2)) sehingga dapat bekerja hinggan=10
di TIO:Cobalah online! Tautan adalah untuk mengucapkan versi kode.Versi 45-byte lebih cepat hanya O (2ⁿ) sehingga dapat dilakukan hingga
n=13
pada TIO:Cobalah online! Tautan adalah untuk mengucapkan versi kode.
Versi 54-byte tercepat menggunakan LCM yang lebih efisien sehingga dapat dilakukan hingga
n=18
pada TIO:Cobalah online! Tautan adalah untuk mengucapkan versi kode.
sumber
Bahasa Wolfram (Mathematica) ,
69686152 byteCobalah online!
3-diindeks. Pada awalnya saya akan menggunakan
LCM@@
tetapi menyadari bahwa#!
akan lebih pendek ... tapi sekarang banyak memori untukRange[#!]
...Berhasil menurunkan kondisi dengan 2 byte, yang bagus.
Solusi numerik yang lebih lama (56 byte):
Cobalah online!
2 diindeks. Lebih efisien ketika
#!>5^8
(#>9
, dengan asumsi#
bilangan bulat).sumber
Python 2 , 78 byte
Cobalah online!
Mengembalikan perkiraan desimal ke +5 digit; menggunakan naif brute pendekatan kekuatan xnor menyarankan dalam komentar pada pertanyaan.
sumber