fork(1) download
  1. (define *primes* '(2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97))
  2.  
  3. (define (meertens? num)
  4. (define (meertens n)
  5. (let ((numlist (number->list n)))
  6. (apply * (map expt *primes* numlist))))
  7. (= (meertens num) num))
  8.  
  9. (define (number->list n :optional (k (if (= n 1000) 3 (truncate (log n 10)))))
  10. ; (log 1000 10)が2.9999999999999996で切り捨てだと3に成らないため
  11. (let loop ((keta k) (result '()) (m n))
  12. (if (< keta 0)
  13. (reverse result)
  14. (let ((tani (expt 10 keta)))
  15. (loop (- keta 1)
  16. (cons (inexact->exact (quotient m tani)) result)
  17. (- m (* (quotient m tani) tani)))))))
  18.  
  19. (meertens? 81312000)
  20.  
Runtime error #stdin #stdout #stderr 0.03s 8792KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
ice-9/psyntax.scm:987:26: In procedure scan:
ice-9/psyntax.scm:987:26: Syntax error:
/home/Z3merk/prog.scm:9:0: source expression failed to match any pattern in form (define (number->list n :optional (k (truncate (/ (log n) (log 10))))) (let loop ((keta k) (result (quote ())) (m n)) (if (< keta 0) (reverse result) (let ((tani (expt 10 keta))) (loop (- keta 1) (cons (inexact->exact (quotient m tani)) result) (- m (* (quotient m tani) tani)))))))