유리수의 p-adic 규범을 계산하십시오
입력으로 3 개의 정수 m,n,p
( p
양의 소수) 를 취하는 함수 또는 프로그램을 작성 하여 p로 표시되는 표준 (으로 표시 |m/n|_p
)을 (완전히 감소 된) 분수로 출력합니다. Fermat은 매우 작은 여백 만있는 것으로 알려져 있지만, 컴퓨터 화면이 매우 작다는 것입니다. 따라서 Fermat의 화면에 맞게 코드를 가능한 짧게 만드십시오!
정의
주요 감안할 때 p
, 각 부분은 m/n
고유로 (부호 무시) 쓸 수있는 (a/b)* p^e
등의 e
정수이고 p
분할도 a
도를 b
. 의 p-adic 규범 은 m/n
입니다 p^-e
. 분수가 0 인 경우 특별한 경우가 있습니다 |0|_p = 0
.
출력 형식은 다음과 같아야합니다 x/y
(예 : 1/3
정수 10
또는 두 정수 모두 10/1
허용, 음수의 경우 앞에 빼기-가 있어야 함 -1/3
)
세부
프로그램은 stdin / stdout을 사용하거나 합리적인 숫자 또는 문자열을 리턴하는 함수로 구성되어야합니다. 입력 m/n
이 완전히 줄어들지 않았다고 가정해야합니다 . p
이것이 프라임 이라고 가정 할 수 있습니다 . 이 프로그램은의 정수 처리 할 수 있어야 -2^28
까지를 2^28
, 그리고 10 초 이상 걸리지 않습니다.
내장 된 인수 분해 및 프라임 검사 기능과 기본 대화 기능은 허용되지 않으며 p-adic 평가 또는 표준을 계산하는 기능이 내장되어 있습니다.
예 ( 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
재미있는 퀴즈
(이 도전에 대해 알고 / 읽을 필요는 없지만 동기 부여로 읽는 것이 좋습니다.)
(내가 잘못된 단어를 사용하거나 다른 것이 잘못되면 나를 교정하십시오. 나는 영어로 이것에 대해 이야기하는 데 익숙하지 않습니다.)
유리수를 필드로 고려하면 p-adic 규범은 p-adic 메트릭을 유도합니다 d_p(a,b) = |a-b|_p
. 그런 다음 이 메트릭과 관련하여이 필드를 완성 할 수 있습니다. 즉, 모든 코시 시퀀스가 수렴되는 새로운 필드를 구성 할 수 있습니다. 이는 훌륭한 토폴로지 속성입니다. (예를 들어, 유리수에는없는 것이지만 실수에는 있습니다.)이 p-adic 숫자 는 짐작했던 것처럼 숫자 이론에서 많이 사용되었습니다.
또 다른 흥미로운 결과는 기본적으로 합리적인 숫자에 대한 절대 값 (아래 정의 참조)은 다음 세 가지 중 하나 인 Ostrowski의 정리 입니다.
- 사소한 :
|x|=0 iff x=0, |x|=1 otherwise
- 표준 (실제) :
|x| = x if x>=0, |x| = -x if x<0
- p-adic (우리가 정의한대로).
절대 값 / 메트릭 은 거리를 고려한 것의 일반화입니다 . 절대 값 |.|
은 다음 조건을 충족합니다.
|x| >= 0 and |x|=0 if x=0
|xy| = |x| |y|
|x+y| <= |x|+|y|
: 당신은 쉽게 반대의 절대 값과 그에서 메트릭을 구성 할 수 있습니다 |x| := d(0,x)
또는 d(x,y) := |x-y|
그들은 거의 동일합니다, 그래서 당신이 할 수있는 경우, 추가 / 빼기 / 곱하기 (정역에 있음). 물론이 구조없이보다 일반적인 집합에 대한 메트릭을 정의 할 수 있습니다.
|x|_11 = 11
. 아니면 11
괜찮아? 그리고 x=0
사건 을 처리해야 합니까?
x=0
경우이 예를 들어, 당신은 출력 할 수 있습니다 11
뿐만 아니라 같은 11/1
,하지만 당신은 인쇄 할 필요가 없습니다 |x|_11
.
PadicNorm
기능도 밖에 있다고 가정 합니까? : P