## Saturday, June 14, 2008

### Euler Problem Number 1 in Scheme (Comparison with CL and Java)

I know the Euler project administrators try discourage to users from posting Euler solutions, but I hope there isn't any harm in posting an solution implementation for the first couple of problems. I plan on posting possible solutions in a variety of different programming languages. Here are three implementations in Scheme, Common Lisp and procedural Java.
`;;;; Euler problem, number 1;; Environment: mzscheme;; ;; If we list all the natural numbers below 10 that ;; are multiples of 3 or 5, we get 3, 5, 6 and 9. ;; The sum of these multiples is 23.;;;; Find the sum of all the multiples of 3 or 5 below 1000.;;;; References:;; [1] http://schemecookbook.org/Cookbook/TOC;;(define (euler1 n)  (let ((x 0))    (do ([i 0 (+ i 1)]) [(= i n)]      (if (or (= 0 (modulo i 5))              (= 0 (modulo i 3)))          (begin            (set! x (+ x i)))))    x))(define (main)  (display "Running\n")  (display (euler1 999))  (display "\nDone\n")  (exit))(main)`

Common Lisp
` (loop for x from 3 to 999       when (or (zerop (mod x 3))                (zerop (mod x 5)))       sum x)`

Java
`public class euler1 {    public static int euler1(final int n) {        int sum = 0;        for (int i = 0; i < n; i++) {            if (((i % 3) == 0) || ((i % 5) == 0)) {                sum += i;            }        }        return sum;    }    public static void main(final String [] args) {        System.out.println("Running");        System.out.println("-->" + euler1(1000));    }} `