Taocp1 2 4

1,353 views

Published on

The Art Of Programming 1.2.4

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,353
On SlideShare
0
From Embeds
0
Number of Embeds
54
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Taocp1 2 4

  1. 1. Taocp1.2.4 정수 함수와 초등 수론<br />AnDStudy.com<br />박일<br />
  2. 2. 내림(floor) 와 올림(ceiling)<br />
  3. 3. mod (나머지)<br />0 mod X = 0<br />X mod Y = X (if X < Y)<br />2 mod 3 = 2<br />
  4. 4. -2 mod 3 = 1?<br />python : -5/4 = -2 C, Java : -5/4 = -1<br />14 나누기 3을 이렇게 해석해 봅시다. 우선 세상에 만원짜리 돈만 있다고 가정합시다. 상금으로 14만원을 받았습니다. 사람은 셋입니다. 14를 3으로 나누면 몫이 4가 되고 나머지가 2가 됩니다. 각자 4만원씩 갖고 2만원이 수중에 남는다는 겁니다. 같이 술이라도 한 잔 마시러 가면 되겠네요.이제는 -14 나누기 3을 생각해 보죠. 술집에서 계산을 했더니 14만원이 나왔습니다. 사람은 셋입니다. 얼마씩 내야할까요?  4만원씩 내면 돈이 모자라죠. 5만원씩 내면 일단 술값을 낼 수는 있네요. 대신 1만원이 남습니다. 빚으로 1만원이 남는 것이 아니고, 우리에게 1만원이 더 있는 것이죠. 역시 그 만원으로 어디 가서 음료수라도 마시면 되겠네요.자 이제 생각해 봅시다. 돈을 내는 것, 모자라는 것은 음수입니다. 돈을 받는 것, 남는 것은 양수입니다. 14만원을 내야하는 데(-14) 세 명이 나누면(-14 / 3) 한 사람당 담당할 몫은 "5만원씩 내는 것(-5)"입니다. 그러고 나면 1만원이 남습니다.이 방식이 파이썬의 방식이고, 자바 방식은 한 사람당 4만원씩 내고(-4), 그 결과 2만원의 부채(-2)가 남는다는 것이죠.<br />http://agile.egloos.com/1666312<br />
  5. 5. -2 mod 3 = 1?<br />엑셀 도움말에서는 mod(number, divisor) 함수<br />: "나머지의 부호는 나누는 수의 부호와 같다.”<br />http://jin6093.egloos.com/2649671<br />
  6. 6. modulus(법) 법칙<br />x ≡ y (modulo z)<br />x mod z = y mod z<br />즉, x – y 가 z 의정수배<br />“z를법(modulus)으로 해서 x 와 y 가 합동”<br />
  7. 7. modulus(법) 법칙<br />a ≡ b  a – b = mi, x ≡ y  x – y = mj<br />  (a ± x) – (b ± y) = mi ± mj = mk<br /><ul><li> a = mi + b, y = x – mj
  8. 8. ax - by = (mi + b)x – b(x – mj) = mix + bx – bx + bmj = m(ix + bj)</li></ul>ax – by = mi, a – b = mj<br /><ul><li> b = a – mj
  9. 9. ax – (a - mj)y = mi
  10. 10. ax – ay + mjy = mi
  11. 11. a(x - y) = m(i – jy)
  12. 12. a ⊥m  (x - y) 를 m 으로 나눌 수 있어야 한다
  13. 13. x - y = mk
  14. 14. x ≡ y(modulo m)</li></li></ul><li>modulus(법) 법칙<br />an – bn = mni<br /><ul><li> n(a - b) = mni</li></ul> (a - b) = mi<br /> a ≡ b (modulo m)<br />a - b = ri, a - b = sj ri = sj (r ⊥s)<br /> i == s, j == r<br />
  15. 15. 연습문제 18번<br />어떤 정수 k 에 대해 a – b = kr이며 kr ≡ 0(modulo s) 이다.<br /> a ≡ b(module s) : a, b를 s 로 나누면 나머지가 같다<br /> a - b ≡ 0(module s) : a - b 를 s 로 나누면 나머지가 0<br />kr ≡ 0(module s)<br />법칙 B 에 의해 k ≡ 0(module s) 이며,<br />kr ≡ 0(module s)인데 r ⊥s 이므로 r 는 s 로 나눠지지 않는다. 즉, k 가 s 로 딱 나눠진다. 즉, k ≡ 0(module s)<br />따라서 어떠한 정수 q 에 대해 a - b = qsr이다.<br /> a-b = kr= qsr(k 는 s 로 딱 나눠지고 몫은 q) (k = qs)<br />
  16. 16. 페르마의소정리<br />
  17. 17. 페르마의소정리<br />p가 소수이고 a를 p의 배수가 아닌 자연수라 할 때, a^(p-1)≡1 (mod p) 가 성립한다.<br />Variation : a^p≡a (mod p) (p는 소수, a는 모든 자연수)<br />ex) p=13이고 a=2라 하면 2^12=4096을 13으로 나누면 나머지 1<br />또는 2^13=8192 를 13으로 나누면 나머지 2(= a)<br />증명<br />집합 A={1,2,3,…(p-1)}라 하면 =>집합 A의 원소를 p로 나눈 나머지는 모두 다르다(∵p는 소수)<br />집합 A´={a,2a,3a,4a,…(p-1)a}라 하자.<br />서로 다른 자연수 m,n(0<m,n<(p-1))이 있다고 할 때 ma∈A´이고 na∈A´임<br />근데 만약 ma≡na(mod p)라면 (m-n)a=0(mod p)이므로 p가 소수라는 조건에 모순<br /> (∵a와 p가 서로소이므로)<br />고로 ma≡na(mod p)인 m,n은 존재하지 않는다<br /> => 집합 A´의 원소를 p로 나눈 나머지는 모두 다르다<br />p를 나눈 나머지가 (p-1)개니까<br />(A원소를 p로 나눈 나머지의 곱)=(A´의 원소를 p로 나눈 나머지의 곱) 식으로 나타내면<br />(p-1)!≡(p-1)! * a^(p-1) (mod p)<br />∴ a^(p-1)≡1 (mod p) (∵ 1, 2, …, p – 1 은 p 와 서로 소이기 때문에 법칙 B 로제거 가능)<br />출처 : http://spaurh.egloos.com/4126299<br />
  18. 18. 페르마의소정리<br />http://ask.nate.com/qna/view.html?n=4925949<br />집합 {1,2,3, .. , p-1} 을 생각해 봅시다.<br />위의 집합에 a를 곱한 집합을 생각해 볼까요? {a, 2a, 3a, .. , (p-1)a}<br />여기에서 모든 원소는 p로 나눈 나머지가 서로 다릅니다.<br />만약에 ma = na (mod p) 라고 가정한다면 (m-n)a 는 p의 배수여야 하는데a는 p의 배수가 아니므로 m-n이 p의 배수.<br />그렇지만 m, n이 1 ~ p-1 사이의 수이므로m-n이 p의 배수이려면 m=n 인 수 밖에 없죠.따라서 서로 다른 원소는 p로 나눈 나머지가 서로 다릅니다.<br />그런데 p로 나눈 나머지가 될 수 있는 것은 {1,2,3, .. , p-1} 이것 밖에 없죠.<br />따라서 {1,2,3, .. , p-1}과 {a, 2a, 3a, .. , (p-1)a}은 mod p에 대해서 같은 집합입니다. 그러므로 각 원소들을 곱하여 보면 (p-1)! = a^(p-1) (p-1)! (mod p) 이 되고 (p-1)! 는 p의 배수가 아니므로 a^(p-1) = 1 (mod p) 가 성립합니다. <br />
  19. 19. 페르마의소정리: 예<br />a^(p-1)≡1 (mod p) <br />

×