Hitung norma p-adic dari bilangan rasional
Tulis fungsi atau program, yang mengambil 3 bilangan bulat m,n,p
(di mana p
bilangan prima positif) sebagai input, yang menampilkan norma p-adic (dilambangkan dengan |m/n|_p
) sebagai fraksi (dikurangi sepenuhnya). Fermat diketahui hanya memiliki margin yang sangat kecil, tetapi yang agak tidak diketahui adalah bahwa ia hanya memiliki layar komputer yang sangat kecil. Jadi cobalah untuk membuat kode sesingkat mungkin agar muat di layar Fermat!
Definisi
Diberi bilangan prima p
, setiap fraksi m/n
dapat ditulis secara unik (mengabaikan tanda-tanda) dengan (a/b)* p^e
demikian e
adalah bilangan bulat dan p
tidak membagi a
juga b
. The norma p-adic dari m/n
adalah p^-e
. Ada kasus khusus, jika fraksi adalah 0: |0|_p = 0
.
Format output harus x/y
(misalnya 1/3
; untuk bilangan bulat keduanya 10
atau yang setara 10/1
diizinkan, untuk bilangan negatif harus ada minus minus terkemuka -1/3
)
Detail
Program harus menggunakan stdin / stdout, atau hanya terdiri dari fungsi yang mengembalikan bilangan rasional atau string. Anda harus berasumsi bahwa input m/n
tidak sepenuhnya berkurang. Anda dapat berasumsi bahwa p
itu prima. Program harus dapat memproses bilangan bulat antara -2^28
hingga 2^28
, dan tidak boleh lebih dari 10 detik.
Internalisasi faktorisasi dan fungsionalitas pemeriksaan prima tidak diperbolehkan, serta basis percakapan bawaan, dan fungsi internal yang menghitung penilaian atau norma p-adic.
Contoh (dicuri dari wikipedia ):
x = m/n = 63/550 = 2^-1 * 3^2 * 5^-2 * 7 * 11^-1
|x|_2 = 2
|x|_3 = 1/9
|x|_5 = 25
|x|_7 = 1/7
|x|_11 = 11
|x|_13 = 1
Hal- hal sepele yang menarik
(Tidak perlu tahu / membaca untuk tantangan ini, tetapi mungkin baik untuk dibaca sebagai motivasi.)
(Tolong koreksi saya jika saya menggunakan kata-kata yang salah, atau ada yang salah, saya tidak terbiasa membicarakan hal ini dalam bahasa Inggris.)
Jika Anda menganggap bilangan rasional sebagai bidang, maka norma p-adic menginduksi metrik p-adic d_p(a,b) = |a-b|_p
. Kemudian Anda dapat menyelesaikan bidang ini terkait dengan metrik ini, itu berarti Anda dapat membangun bidang baru tempat semua urutan cauchy bertemu, yang merupakan properti topologi yang bagus untuk dimiliki. (Yang misalnya bilangan rasional tidak memiliki, tetapi real memiliki.) Bilangan p-adik ini seperti yang Anda duga, banyak digunakan dalam teori bilangan.
Hasil lain yang menarik adalah teorema Ostrowski yang pada dasarnya mengatakan, setiap nilai absolut (sebagaimana didefinisikan di bawah) pada bilangan rasional adalah salah satu dari tiga berikut:
- Sepele:
|x|=0 iff x=0, |x|=1 otherwise
- Standar (nyata):
|x| = x if x>=0, |x| = -x if x<0
- P-adic (seperti yang kita definisikan).
Nilai absolut / metrik hanyalah generalisasi dari apa yang kami anggap sebagai jarak . Nilai absolut |.|
memenuhi persyaratan berikut:
|x| >= 0 and |x|=0 if x=0
|xy| = |x| |y|
|x+y| <= |x|+|y|
Perhatikan bahwa Anda dapat dengan mudah membuat metrik dari nilai absolut dan sebaliknya: |x| := d(0,x)
atau d(x,y) := |x-y|
, sehingga hampir sama jika Anda dapat menambah / mengurangi / melipatgandakan (yang ada dalam domain integral). Anda tentu saja dapat mendefinisikan metrik pada set yang lebih umum, tanpa struktur ini.
|x|_11 = 11
, kan? Atau 11
baik - baik saja? Dan apakah itu harus menangani x=0
kasus ini?
x=0
dan untuk contoh ini Anda bisa keluaran 11
juga 11/1
, tetapi Anda tidak harus mencetak |x|_11
.
PadicNorm
fungsi Mathematica juga keluar? : P