66 lines
1.1 KiB
Plaintext
66 lines
1.1 KiB
Plaintext
{def factors
|
|
{def factors.r
|
|
{lambda {:n :i}
|
|
{if {> :i :n}
|
|
then
|
|
else {if {= {% :n :i} 0}
|
|
then :i {factors.r {/ :n :i} :i}
|
|
else {factors.r :n {+ :i 1}} }}}}
|
|
{lambda {:n}
|
|
{A.new {factors.r :n 2} }}}
|
|
-> factors
|
|
|
|
{factors 491} -> [491] // prime
|
|
{factors 492} -> [2,2,3,41]
|
|
{factors 493} -> [17,29] // semiprime
|
|
{factors 494} -> [2,13,19]
|
|
{factors 495} -> [3,3,5,11]
|
|
{factors 496} -> [2,2,2,2,31]
|
|
{factors 497} -> [7,71] // semiprime
|
|
{factors 498} -> [2,3,83]
|
|
{factors 499} -> [499] // prime
|
|
{factors 500} -> [2,2,5,5,5]
|
|
|
|
{S.replace \s by space in
|
|
{S.map {lambda {:i}
|
|
{let { {:i :i} {:f {factors :i}}
|
|
} {if {= {A.length :f} 2}
|
|
then :i={A.first :f}*{A.last :f}
|
|
else}} }
|
|
{S.serie 1 100}}}
|
|
->
|
|
4 = 2*2
|
|
6 = 2*3
|
|
9 = 3*3
|
|
10 = 2*5
|
|
14 = 2*7
|
|
15 = 3*5
|
|
21 = 3*7
|
|
22 = 2*11
|
|
25 = 5*5
|
|
26 = 2*13
|
|
33 = 3*11
|
|
34 = 2*17
|
|
35 = 5*7
|
|
38 = 2*19
|
|
39 = 3*13
|
|
46 = 2*23
|
|
49 = 7*7
|
|
51 = 3*17
|
|
55 = 5*11
|
|
57 = 3*19
|
|
58 = 2*29
|
|
62 = 2*31
|
|
65 = 5*13
|
|
69 = 3*23
|
|
74 = 2*37
|
|
77 = 7*11
|
|
82 = 2*41
|
|
85 = 5*17
|
|
86 = 2*43
|
|
87 = 3*29
|
|
91 = 7*13
|
|
93 = 3*31
|
|
94 = 2*47
|
|
95 = 5*19
|