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

 
Previous Post 디카] 캐논 풀사이즈 CMOS 센서 실물 사진; DSLR Canon Full Size커피 녹차 홍차 박카스, 카페인의 차이, Coffee / Green Tea Caffeine...Perl 펄] 분수 약분 함수 구현; Reduce a FractionPerl 펄] 최대 공약수 구하기 함수, 유클리드 호제법; GCD, Euclidean Al...C언어] gets, fgets 함수로, 키보드 문자(문자열) 입력 받기; String In...C언어] scanf 함수로, 문자열/정수/실수 입력 받기; scanf Function In...파일 개수 세기 도스 명령어; File Counter DOS Command매스매티카] 허수 단위 i 입력 방법; Mathematica IMAGINARY UNIT I...매스매티카] 루트 근사값, 제곱근 구하기 함수 사용법; Mathematica Square ...Java 자바] 정수 숫자 입력 받기, 16진수 헥사 입력; Input Hex Int Nu...

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

Saturday, March 24, 2007
스폰서 링크

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

분수를 약분하는 함수를 만드는 방법입니다. 아래의 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

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

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