>>308 Scheme
(define *pr* (primes 10))
;;;sからeまでの自然数を調べ該当する最初の数を得る
(define foo
(lambda (s e)
(cond
((> s e) #f)
((= s (f s)) s)
(else (foo (1+ s) e)))))

;;; f(x)=p1^d1 * p2^d2 * p3^d3 ....* pn^dn を求める
(define f
(lambda (n)
(f-help n (int (floor (log n 10))) 1 *pr* #f (lambda (x) x))))

(define f-help
(lambda (n e cnt pr dn col)
(cond
((< n 1) (col 1))
(else
(set! dn (quotient n (expt 10 e)))
(f-help
(- n (* dn (expt 10 e))) (1- e) (1+ cnt) (cdr pr) #f
(lambda (x) (col (* (expt (car pr) dn) x))))))))

;;;適用例 ;処理に時間がかかる
(foo 80000000 999999999)
81312000