Показать сообщение отдельно
  #1 (permalink)  
Старый 29.09.2017, 22:07
Интересующийся
Отправить личное сообщение для Gtfuc Посмотреть профиль Найти все сообщения от Gtfuc
 
Регистрация: 22.08.2017
Сообщений: 27

Большие числа
Добрый день! Нужен совет по поводу работы с большими числами?
Есть следующий код в котором надо найти количество нулей выражения a, где 23! - это факториал числа 23, 24!! - это факториал числа, который выглядит следующим образом: 24!! = 2*4*6*8*10*12*14*16*18*20*22*24, для 25!! - наоборот, произведение нечетных чисел. Каким образом можно избавиться от экспоненты в степени, при этом не используя сторонних библиотек и т.д?
var a = '23!*24!!*25!*26!!*27!!';
		var arr = a.split('*');
		var res = [];
		var multi = 1;
		for (var k=0; k<arr.length; k++){
			var val = 1;
			if (arr[k].substring(arr[k].length-2) == '!!'){
				if (parseInt(arr[k])%2 == 0){
					for(var l = 2; l<=parseInt(arr[k]); l=l+2){
						val *= l;
					}
					res.push(val);
				}
				else {
					for(var h = 1; h<=parseInt(arr[k]); h=h+2){
						val *= h;
					}
					res.push(val);
				}
			}
			else {
				for (var i=2; i<=parseInt(arr[k]); i++){
					val *= i;
				}
				res.push(val);
			}
		}
		for (var g=0; g<res.length; g++){
			multi *= res[g];
		}
		var zeros = String(multi).split('');
			var count = 0;
			for (var j=zeros.length-1; j>=0; j--){
				if(zeros[j]==0){
					count++;
				}
				else if(zeros[j]!=0){
					break;
				}
			}
			console.log(zeros);
			console.log(count);
Ответить с цитированием