40 lines
948 B
JavaScript
40 lines
948 B
JavaScript
function run_factorize(input, output) {
|
|
var n = new BigInteger(input.value, 10);
|
|
var TWO = new BigInteger("2", 10);
|
|
var divisor = new BigInteger("3", 10);
|
|
var prod = false;
|
|
|
|
if (n.compareTo(TWO) < 0)
|
|
return;
|
|
|
|
output.value = "";
|
|
|
|
while (true) {
|
|
var qr = n.divideAndRemainder(TWO);
|
|
if (qr[1].equals(BigInteger.ZERO)) {
|
|
if (prod)
|
|
output.value += "*";
|
|
else
|
|
prod = true;
|
|
output.value += "2";
|
|
n = qr[0];
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
|
|
while (!n.equals(BigInteger.ONE)) {
|
|
var qr = n.divideAndRemainder(divisor);
|
|
if (qr[1].equals(BigInteger.ZERO)) {
|
|
if (prod)
|
|
output.value += "*";
|
|
else
|
|
prod = true;
|
|
output.value += divisor;
|
|
n = qr[0];
|
|
}
|
|
else
|
|
divisor = divisor.add(TWO);
|
|
}
|
|
}
|