Monday, August 24, 2009

Euler Project 57


It is possible to show that the square root of two can be expressed as an infinite continued fraction.
√ 2 = 1 + 1/(2 + 1/(2 + 1/(2 + ... ))) = 1.414213...
By expanding this for the first four iterations, we get:
1 + 1/2 = 3/2 = 1.5
1 + 1/(2 + 1/2) = 7/5 = 1.4
1 + 1/(2 + 1/(2 + 1/2)) = 17/12 = 1.41666...
1 + 1/(2 + 1/(2 + 1/(2 + 1/2))) = 41/29 = 1.41379...

The next three expansions are 99/70, 239/169, and 577/408, but the eighth expansion, 1393/985, is the first example where the number of digits in the numerator exceeds the number of digits in the denominator.
In the first one-thousand expansions, how many fractions contain a numerator with more digits than denominator?

My Solution

(defun Euler57(n)
  (let ((num 0)
         (x (/ 1 2))
         (temp 0))
    (loop for i from 1 to n
         do(progn (setq temp (+ 1 x))
                      (if (> (length (format nil "~a" (numerator temp)))
                              (length (format nil "~a" (denominator temp))))
                          (progn (incf num) (setq x (/ 1 (+ 2 x))))
                          (setq x (/ 1 (+ 2 x))))))
    num))

No comments:

Post a Comment