Sunday, August 23, 2009

Euler Project 129


A number consisting entirely of ones is called a repunit. We shall define R(k) to be a repunit of length k; for example, R(6) = 111111.
Given that n is a positive integer and GCD(n, 10) = 1, it can be shown that there always exists a value, k, for which R(k) is divisible by n, and let A(n) be the least such value of k; for example, A(7) = 6 and A(41) = 5.
The least value of n for which A(n) first exceeds ten is 17.
Find the least value of n for which A(n) first exceeds one-million.

My Solution
(defun A(n)
  (let ((reminder 1)
          (Ncount 1))
    (loop
      (progn (if (/= (gcd 10 n) 1)
                     (return Ncount))
                (if (/= 0 reminder)
                    (progn (setq reminder (rem (+ (* reminder 10)
                                                                    1)
                                                              n))
                               (incf Ncount))
                    (return Ncount))))
    Ncount))
(defun Euler129(n)
  (loop for i from 1000001 to n by 2
        do(progn (if (> (A i) 1000000)
                          (return i)))))

No comments:

Post a Comment