26 lines
371 B
Text
26 lines
371 B
Text
function factor(n_) {
|
|
n = n_
|
|
a = J(0,2,.)
|
|
if (n<2) {
|
|
return(a)
|
|
}
|
|
else if (n<4) {
|
|
return((n,1))
|
|
}
|
|
else {
|
|
if (mod(n,2)==0) {
|
|
for (i=0; mod(n,2)==0; i++) n = floor(n/2)
|
|
a = a\(2,i)
|
|
}
|
|
|
|
for (k=3; k*k<=n; k=k+2) {
|
|
if (mod(n,k)==0) {
|
|
for (i=0; mod(n,k)==0; i++) n = floor(n/k)
|
|
a = a\(k,i)
|
|
}
|
|
}
|
|
|
|
if (n>1) a = a\(n,1)
|
|
return(a)
|
|
}
|
|
}
|