22 lines
612 B
Text
22 lines
612 B
Text
(de factor (N)
|
|
(make
|
|
(let (D 2 L (1 2 2 . (4 2 4 2 4 6 2 6 .)) M (sqrt N))
|
|
(while (>= M D)
|
|
(if (=0 (% N D))
|
|
(setq M (sqrt (setq N (/ N (link D)))))
|
|
(inc 'D (pop 'L)) ) )
|
|
(link N) ) ) )
|
|
(de sumdigits (N)
|
|
(sum format (chop N)) )
|
|
(de smith (X)
|
|
(make
|
|
(for N X
|
|
(let R (factor N)
|
|
(and
|
|
(cdr R)
|
|
(= (sum sumdigits R) (sumdigits N))
|
|
(link N) ) ) ) ) )
|
|
(let L (smith 10000)
|
|
(println 'first-10 (head 10 L))
|
|
(println 'last-10 (tail 10 L))
|
|
(println 'all (length L)) )
|