본문 바로가기

Continued Fraction

(3)
[EP 057] 2의 제곱근의 연분수 표현 #!/usr/bin/env python def jarisu(n): su = 0 while n != 0: su += 1 n //= 10 return su bunja = 3 bunmo = 2 count = 0 for i in range(2, 1001): bunja, bunmo = bunja + 2 * bunmo, bunja + bunmo if jarisu(bunja) > jarisu(bunmo): count += 1 print(count) 오일러 프로젝트 57번 문제. 2의 제곱근을 연분수(continued fraction) 모양으로 근사한 분수들(초기 1000항)의 분자와 분모의 자리수 비교하여 분자의 자리수가 분모의 자리수보다 커지는 것의 갯수를 구하는 것. https://daewonyoon.tistor..
Sqrt(n) 의 연분수 표현 구하기 Sqrt(n) 의 연분수를 정확하게 구하기. sqrt(n) 의 연분수는 [ a_0;a_1, a_2, ... ] 이고 유리수 소수표현처럼 순환마디가 있을거다. a_n = [ b_n ] 으로 정의되고, b_{n+1} = 1 / ( b_n - a_n ) 이고, b_0 = sqrt(n) b_n 은 어떻게든 분모를 유리화할수 있고, b_n = x_n sqrt(n) + y_n (x_n, y_n 은 유리수) 로 표현이 가능하다. 그래서, x_n, y_n 은 언젠가는 동일한 것이 나와서 순환할 것. sqrt(2) = [ 1; 2, 2, 2, ... ] 이다. sqrt(3) = [ 1; 1, 2, 1, 2, ... ] 이 과정을 프로그래밍해 본다. #!/usr/bin/env python # ----------------..
[Python] 실수값 연분수로 근사값 분수 찾기, approx real value using continued fraction import math def contfrac(x, n=10, mx=1000): """ get continued fraction of real x 1 x = r0 + -------------------------- 1 r1 + -------------------- 1 r2 + ------------- r3 + .... n : maximum length of returning r:list mx : maximum ri return : continued fraction, list of integers """ r = [int(x)] if n == 0 or (x - r[0] < 1 / mx): return r return r + contfrac(1 / (x - r[0]), n - 1, mx) def cf2frac(..