codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
;;;お題 ;;;1からN未満の自然数で3または5の倍数の合計を求めよ ;;;ただし、9で割り切れる数は除外すること ;;;(foo n 結果表示関数) -> 合計 倍数のリスト (define foo (lambda (n col) (cond ((zero? n) (col 0 '())) ((and (or (zero? (mod n 5)) (zero? (mod n 3))) (not (zero? (mod n 9)))) (foo (1- n) (lambda (x y) (col (+ n x) (cons n y))))) (else (foo (1- n) (lambda (x y) (col x y))))))) ;;;実行例 ;;;N=30なら合計は171,倍数リストは以下のごとし (foo 30 list) (171 (30 25 24 21 20 15 12 10 6 5 3)) ;;;N=1000000なら合計は188889611109 ;;;リストは長いので非表示指示 (foo 1000000 (lambda (x y) x)) 177778222224 ;;;N=300000 (foo 300000 (lambda (x y) x)) 16000100001
Private
[
?
]
Run code
Submit