2009-12-01から1ヶ月間の記事一覧

Project Euler Problem 31

問題31: イギリス硬貨 1ペンス〜2ポンドを使い 2ポンドをつくる方法は何通りあるか。[=>問題文] 問題31の解答 ;; Emacs lisp (require 'cl) (defun problem031a (n) (labels ((repeat (coins acc) (if (null coins) 0 (do ((add (car coins)) (next-coins (c…

Project Euler Problem 30

問題30: 2以上の自然数について、各桁を5乗した数の和が元の数と一致する数をすべて求め、その和を答えよ。[=>問題文] 上限が与えられない問題です。左辺の値いくつまで調べればよいのか。注目するのは「桁数」です。 k 桁の数を考えます。各桁の最大値は 9 …

Project Euler Problem 29

問題29: 2[=>問題文] 問題29の解答 (list + delete-dups) ;; Emacs Lisp (require 'cl) (require 'bigint) ;integer-to-bigint, bigint* (defun problem029a (limit) (length (delete-dups (do ((a 2 (1+ a)) (lis)) ((> a limit) lis) (let ((n (integer-to…

Project Euler Problem 28

問題28:渦巻状に自然数を並べた1001x1001数方陣の対角線上にある数の合計を求める。方陣の詳細はリンク先参照[=>問題文] 問題28の解答 ;; Emacs Lisp (require 'cl) (defun problem028 (N) (do ((n 3.0 (+ n 2)) (result 1)) ((> n N) result) (let ((d (1- …

Project Euler Problem 27

問題27: 二次式 n^2 + an + n = p (|a| 素数) において、n に 0から連続する整数を代入したときもっとも大きな n まで式が成り立つ a b の組を求め、その積を答えよ。[=>問題文] 効率的な素数判定方法を考えていたら2日経ってしまいました。最終的に、処理時…