03 · 유리수: 교차 곱과 약분
유리수: 교차 곱과 약분¶
분수를 정수 쌍으로 보고 선택한 분자와 분모에 값이 좌우되지 않게 합니다.
이 장을 읽기 전에
대표원, 동치류, 정규형의 차이를 압니다.
이 장을 마치면
- ‘유리수: 교차 곱과 약분’의 수학적 정의를 자신의 말로 설명하기
- 그 정의가 Python 데이터로 표현되는 방법 찾기
- 실제 코드에서 작은 실행 과정을 예측하기
수학적 정의
분모가 0이 아닐 때 `p/q`와 `r/s`는 `p*s=q*r`일 때 같으므로 `1/2`와 `2/4`는 같은 값입니다.
데이터 표현
`Rational`은 정수 분자와 0이 아닌 분모를 저장하고 `reduction()`으로 읽기 쉬운 정규형을 고릅니다.
Python 구현
`p/q ~ r/s` → `p * s == q * r` → `Rational.__eq__`
함께 읽을 구현과 테스트
수학적 정의
수학적 정의¶
분모가 0이 아닐 때 p/q와 r/s는 p*s=q*r일 때 같으므로 1/2와 2/4는 같은 값입니다.
데이터 표현
데이터 표현¶
Rational은 정수 분자와 0이 아닌 분모를 저장하고 reduction()으로 읽기 쉬운 정규형을 고릅니다.
Python 구현
Python 구현¶
__eq__는 교차 곱을 비교하고 __add__는 공통 분모를 만들며 약분은 부호와 최대공약수를 정리합니다.
이 강의에서 사용하는 정확한 대응:
실행 과정
실행 과정¶
비교는 정수 곱셈과 같음으로 내려가 수 체계가 기존 정의를 재사용함을 보여 줍니다.
실행 전 예측
같음의 불리언 값과 `2/4`의 약분 결과를 예측하세요.
실험 · 유리수: 교차 곱과 약분
실행 전
⌘ / Ctrl + Enter
출력
먼저 예측을 적고 실행하세요.
테스트로 확인
테스트로 확인¶
테스트는 동치인 분수, 해시, 0 분모 거부를 확인합니다.
범위와 한계
범위와 한계¶
큰 분자와 분모는 아래의 단항 자연수 비용을 키웁니다.