elisp なのに C っぽい書き方。
(defun euler1 (number) (let ((i 1) (sum 0)) (while (< i number) (if (or (zerop (% i 3)) (zerop (% i 5))) (setq sum (+ sum i))) (setq i (1+ i))) sum))
(euler1 1000) =>233168
やはり elisp なのに C っぽい書き方。
(defun euler2 (arg1 arg2 limit) (let (arg3 (sum 0)) (while (< arg1 limit) (if (zerop (% arg1 2)) (setq sum (+ sum arg1))) (setq arg3 (+ arg1 arg2)) (setq arg1 arg2) (setq arg2 arg3)) sum))
(euler2 1 2 (* 400 10000)) =>4613732
もうちょっとフィボナッチ数列の特性を考慮した方が良さそう。
具体的には、
arg1
, arg2
のうち 1 つでも奇数があるか否かで、
項が何個おきに偶数になるか分かるとか。