컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Saturday, March 24, 2007

Python 파이썬] 분수 약분 방법을 함수로 구현; Reduce a Fraction


파이썬은 수학에 강한 언어이지만, 분수를 약분하는 함수는 없었습니다.

분수를 약분하는 함수를 만드는 방법입니다. 아래의 reduceFraction 이라는 함수가 완성된 결과입니다.

참고로 컴퓨터에서는 분수 "2분의 1"을, "1/2"로 표현합니다.

분수 약분 예제
스크립트 파일명: example.py
#!/usr/bin/python
# -*- coding: cp949 -*-

# 분수 출력 함수
# (분자 분모가 든 리스트 입력받아 출력)
def printFraction(bunsu):
  print "%d/%d" % (bunsu[0], bunsu[1])




# 최대 공약수 계산 메서드
# (Euclidean Algorithm; Euclid's Algorithm)
def gcd(a, b):
  while (b != 0):
    temp = a % b
    a = b
    b = temp
  return abs(a)




# 분수 약분 함수 (Reduce a Fraction)
# 분자 분모를 입력받아, 약분 후, 분자 분모가 든 배열을 반환
def reduceFraction(bunja, bunmo):
  frac = [ bunja, bunmo ]

  if (frac[1] == 0): # 분모가 0일 경우에 에러 반환
    frac[0] = 0
    frac[1] = 0
    return frac

  gcd_result = gcd(frac[0], frac[1])

  frac[0] = frac[0] / gcd_result
  frac[1] = frac[1] / gcd_result

  return frac



########## 여기 이하부터는 약분 테스트 ###########


# 5/10 (10분의 5)
printFraction(reduceFraction(5, 10));
# 출력 결과: 1/2

# 1/2 (2분의 1)
printFraction(reduceFraction(1, 2));
# 출력 결과: 1/2

# 2940/3150 (3150분의 2940)
printFraction(reduceFraction(2940, 3150));
# 출력 결과: 14/15

# 6/63 (63분의 6)
printFraction(reduceFraction(6, 63));
# 출력 결과: 2/21

# 63/6 (6분의 63)
printFraction(reduceFraction(63, 6));
# 출력 결과: 21/2

# 1/1 (1분의 1)
printFraction(reduceFraction(1, 1));
# 출력 결과: 1/1

# 555/555 (555분의 555)
printFraction(reduceFraction(555, 555));
# 출력 결과: 1/1

# 0/1 (1분의 0)
printFraction(reduceFraction(0, 1));
# 출력 결과: 0/1

# 1/0 (0분의 1)
printFraction(reduceFraction(1, 0));
# 출력 결과 (에러): 0/0
# 분모가 0이 될 수는 없음

# 0/0 (0분의 0)
printFraction(reduceFraction(0, 0));
# 출력 결과 (에러): 0/0





분수 약분 계산기 (온라인) / 분자 분모 마이너스 부호 처리: ▶▶ 분수 약분 계산기: reduce a Frac Calc




tag: python
Python | 파이썬

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top