36 lines
825 B
Text
36 lines
825 B
Text
(de accud (Var Key)
|
|
(if (assoc Key (val Var))
|
|
(con @ (inc (cdr @)))
|
|
(push Var (cons Key 1)) )
|
|
Key )
|
|
(de **sum (L)
|
|
(let S 1
|
|
(for I (cdr L)
|
|
(inc 'S (** (car L) I)) )
|
|
S ) )
|
|
(de factor-sum (N)
|
|
(if (=1 N)
|
|
0
|
|
(let
|
|
(R NIL
|
|
D 2
|
|
L (1 2 2 . (4 2 4 2 4 6 2 6 .))
|
|
M (sqrt N)
|
|
N1 N
|
|
S 1 )
|
|
(while (>= M D)
|
|
(if (=0 (% N1 D))
|
|
(setq M
|
|
(sqrt (setq N1 (/ N1 (accud 'R D)))) )
|
|
(inc 'D (pop 'L)) ) )
|
|
(accud 'R N1)
|
|
(for I R
|
|
(setq S (* S (**sum I))) )
|
|
(- S N) ) ) )
|
|
(bench
|
|
(for I 20000
|
|
(let X (factor-sum I)
|
|
(and
|
|
(< I X)
|
|
(= I (factor-sum X))
|
|
(println I X) ) ) ) )
|