Математика: разложение числа на простые множители.

Код:
Stage.align = 'TL';
mess_txt = createTextField("mess_txt", 0, 2, 2, 300, 20 );
mess_txt.autoSize = 'left';
mess_txt.text = 'Введите число и нажмите на кнопку. 15 знаков максимум.';
num_txt = createTextField("num_txt", 1, 4, 24, 200, 20 );
num_txt.type = 'input'; num_txt.restrict = "0-9"; num_txt.border = true;
time_txt = createTextField("time_txt", 2, 4, 46, 200, 20 );
time_txt.autoSize = "left";
rez_txt = createTextField("rez_txt", 3, 4, 68, 200, 20 );
rez_txt.autoSize = "left"; rez_txt.multiline = true;
b_txt = createTextField("num_txt", 4, 212, 24, 100, 20 );
b_txt.html = true;
b_txt.htmlText = "<b><a href='asfunction:acceptAndCalculate' >[ CALCULATE ]</a> </b>";
function acceptAndCalculate():Void{
if(num_txt.text.length > 15){
rez_txt.text = ' (( number too big only 15 digits plz )) ';
return;
}
var n:Number = Number(num_txt.text);
if(isNaN(n)){
rez_txt.text = ' (( enter number )) ';
return;
}
var t:Number = getTimer();
rez_txt.text = String(n)+' =\n'+findEm(n).join('*');
time_txt.text = 'calculated in '+ String(getTimer() - t) + 'ms';
}
function findEm( num:Number ):Array{
var arr:Array = [];
var k:Number = 2;
while( true ){
if( k*k > num ){
arr.push( num );
break;
}
if( num % k == 0 ){
arr.push(k);
num /= k;
continue;
}
k++;
}
trace(arr);
return arr;
}