プログラミングのお題スレ Part6©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0331デフォルトの名無しさん
2015/01/21(水) 12:13:47.52ID:ij8A/lkc(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
■ このスレッドは過去ログ倉庫に格納されています