반응형
>>> def egypt(x):
''' x = (a, b) which represent a/b
'''
r = []
while x[1]%x[0]:
m = x[1]//x[0] + 1
r.append(m)
x = (x[0]*m - x[1], x[1]*m)
r.append(x[1]//x[0])
print('+'.join('1/%d'%d for d in r))
return r
>>> egypt((4, 5))
1/2+1/4+1/20
[2, 4, 20]
>>> egypt((2, 11))
1/6+1/66
[6, 66]
>>> egypt((761, 1000))
1/2+1/4+1/91+1/91000
[2, 4, 91, 91000]
분수의 이집트분수 분해를 구하는 코드. 버그 없는지 잘 모르겠는데, 일단 깔끔하게 됨.
728x90
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[EP 005] least common multiple for a list of numbers (0) | 2020.11.18 |
---|---|
[EP 080] 100까지의 정수의 제곱근의 자리수 합 (0) | 2020.11.17 |
[EP 048] ∑ i^i (i=1 ~ 1000) 의 마지막 10자리수 구하기 (0) | 2019.12.24 |
[EP 050] 연속된소수의합이 다시 소수 (0) | 2019.12.18 |
[Euler Project 134] 1219는 소수 19로 끝나는 23의 배수 (3) | 2012.12.14 |