- プログラミングのお題スレ Part6©2ch.net
331 :デフォルトの名無しさん[sage]:2015/01/21(水) 12:13:47.52 ID:ij8A/lkc - >>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
|