Rasyonel bir sayının p-adik normunu hesaplayın
Giriş olarak 3 tamsayıyı m,n,p
( p
pozitif bir asal olan) alan, |m/n|_p
(tamamen azaltılmış) bir fraksiyon olarak p-adik normu (ile gösterilir ) çıktı veren bir fonksiyon veya program yazın . Fermat'ın sadece çok küçük marjları olduğu biliniyor, ancak bilinmeyen şey, sadece çok küçük bir bilgisayar ekranına sahip olması. Bu yüzden kodu Fermat'ın ekranına sığması için mümkün olduğunca kısa tutmaya çalışın!
Tanım
Bir asal Verilen p
her fraksiyon m/n
benzersiz olarak (işaretleri görmezden) yazılabilir (a/b)* p^e
böyle e
bir tam sayıdır ve p
böler ne a
de b
. P-adic normu ait m/n
olan p^-e
. Kesir 0 ise özel bir durum vardır: |0|_p = 0
.
Çıktı formatı x/y
(ör 1/3
. Hem tamsayılar hem de 10
eşdeğer 10/1
olarak izin verilir, negatif sayılar için önde gelen eksi olmalıdır -1/3
)
ayrıntılar
Program stdin / stdout kullanmalı veya sadece rasyonel sayı veya dizeyi döndüren bir işlevden oluşmalıdır. Girişin m/n
tamamen azaltılmadığını varsaymalısınız . Bunun p
asal olduğunu varsayabilirsiniz . Program, tamsayıları 10 saniyeye -2^28
kadar işleyebilmeli 2^28
ve 10 saniyeden fazla sürmemelidir.
Yerleşik çarpanlara ayırma ve prime kontrol işlevlerine ve yerleşik temel konuşmalara izin verilmez ve p-adik değerleme veya normu hesaplayan yerleşik işlevlere izin verilir.
Örnekler ( wikipedia'dan çalındı ):
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
İlginç bilgiler
(Bu meydan okumayı bilmek / okumak gerekmiyor, ama belki de motivasyon olarak okumak güzel.)
(Yanlış kelimeleri kullanırsam ya da başka bir şey yanlış olursa lütfen beni düzeltin, bu konuda İngilizce konuşmaya alışkın değilim.)
Rasyonel sayıları bir alan olarak görürseniz, p-adik norm p-adik metriğini indükler d_p(a,b) = |a-b|_p
. Daha sonra bu alanı bu metriğe göre tamamlayabilirsiniz , yani tüm cauchy dizilerinin birleştiği yeni bir alan oluşturabilirsiniz, bu da sahip olmak güzel bir topolojik özelliktir. (Hangi rasyonel sayıların sahip olmadığı, fakat gerçeklerin sahip olduğu.) Bu p-adik sayılar tahmin edebileceğiniz gibi sayı teorisinde çok kullanılır.
Bir başka ilginç sonuç, Ostrowski'nin rasyonel sayılardaki (aşağıda tanımlandığı gibi) herhangi bir mutlak değerin aşağıdaki üçten biri olduğunu söyleyen teoremidir :
- Önemsiz:
|x|=0 iff x=0, |x|=1 otherwise
- Standart (gerçek):
|x| = x if x>=0, |x| = -x if x<0
- P-adic (tanımladığımız gibi).
Mutlak değer / metrik , yalnızca mesafe olarak düşündüğümüz şeyin genelleştirilmesidir . Mutlak bir değer |.|
aşağıdaki koşulları karşılar:
|x| >= 0 and |x|=0 if x=0
|xy| = |x| |y|
|x+y| <= |x|+|y|
Metrikleri mutlak değerlerden kolayca oluşturabileceğinizi |x| := d(0,x)
veya bunun tersini yapabileceğinizi unutmayın: veya d(x,y) := |x-y|
, / substract / multiply (yani integral alan adlarında) ekleyebiliyorsanız neredeyse aynıdır . Elbette bu yapı olmadan daha genel kümelerde bir metrik tanımlayabilirsiniz.
|x|_11 = 11
, değil mi? Yoksa 11
iyi mi? Ve x=0
davayı ele alması gerekiyor mu?
x=0
davayı ve bu örnek için çıkış olabilir 11
sıra sıra 11/1
fakat yazdırmak gerekmez |x|_11
.
PadicNorm
işlevinin de bittiğini varsayıyorum ? : P