Показать сообщение отдельно
Старый 08.07.2007, 04:13
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 49  
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Математика: разложение числа на простые множители.
Код:
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;
}