콘텐츠로 이동

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__`

함께 읽을 구현과 테스트

peano/rational.py · tests/test_rational.py

수학적 정의

수학적 정의

분모가 0이 아닐 때 p/q와 r/s는 p*s=q*r일 때 같으므로 1/2와 2/4는 같은 값입니다.

데이터 표현

데이터 표현

Rational은 정수 분자와 0이 아닌 분모를 저장하고 reduction()으로 읽기 쉬운 정규형을 고릅니다.

Python 구현

Python 구현

__eq__는 교차 곱을 비교하고 __add__는 공통 분모를 만들며 약분은 부호와 최대공약수를 정리합니다.

이 강의에서 사용하는 정확한 대응:

`p/q ~ r/s` → `p * s == q * r` → `Rational.__eq__`

실행 과정

실행 과정

비교는 정수 곱셈과 같음으로 내려가 수 체계가 기존 정의를 재사용함을 보여 줍니다.

실행 전 예측

같음의 불리언 값과 `2/4`의 약분 결과를 예측하세요.

실험 · 유리수: 교차 곱과 약분 실행 전
⌘ / Ctrl + Enter
출력
먼저 예측을 적고 실행하세요.

테스트로 확인

테스트로 확인

테스트는 동치인 분수, 해시, 0 분모 거부를 확인합니다.

범위와 한계

범위와 한계

큰 분자와 분모는 아래의 단항 자연수 비용을 키웁니다.

‘유리수: 교차 곱과 약분’의 구현을 올바르게 설명한 것은 무엇인가요?