blob: ea3ca151a0eb52d8e44de5a968cc2714614f953f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
(func .list-of-num (num)
(def nums (list))
(for-count num
(redef nums (append nums _idx_)))
nums)
(func .rough-sqrt (num) (.rough-sqrt num 1))
(func .rough-sqrt (num val)
(branch
((eq? (* val val) num) val)
((> (* val val) num) (- val 1))
(#true
(.rough-sqrt num (+ 1 val)))))
(func factor-naive (num)
(filter (lambda (x) (int? (/ num x))) (.list-of-num num)))
(func factor-better (num)
(append
(filter (lambda (x) (int? (/ num x))) (.list-of-num (floor (/ num 2))))
num))
(func factor-even-better (num)
(def ret (list))
(for-each (.list-of-num (.rough-sqrt num))
(if (int? (/ num _item_))
(redef ret (append ret (list _item_ (/ num _item_))))))
ret)
|