Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
6 / 6 / 2
Регистрация: 03.08.2013
Сообщений: 56

Интересует мой результат по выполнению операции умножения чисел

19.12.2013, 03:31. Показов 1123. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, я пишу свою небольшую библиотеку для вычитания/сложения/деления/умножения и т.д. Сделал пока только сложение, вычитание, умножение. Проверял сложение и вычитание по времени, там вообще почти задержек нету, а в умножении 0.3-0.60 мс. Это нормально? Можно ли быстрее? Моя библиотека базируется не на числах, а на строках, что позволяет узнавать точные большие значения. Я умножил два числа, вот такие:
1. 5435345234758234658923465894352357894634 532537567865
2. 5432745234523854654365467546542365683789 56235437
В среднем результаты: 0.62; 0.63; 0.47; 0.15(я не знаю, почему так); 0.16;
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/* Multi */
function multi(str0,str1,zr){
  var dt0=Date.now();
  if(zr==undefined||zr=="y"){zr=true}
  else if(zr=="n"){zr=false}
  if(str0=="0"||str1=="0"){return "0"}
  else if(str0=="1"){return str1}
  else if(str1=="1"){return str0}
  else{
    if((str0[0]=="-"&str1[0]!="-")||(str0[0]!="-"&str1[0]=="-")){var m="-"}
    else{var m=""}
    str0=abs(str0);str1=abs(str1);
    var sg="0";var out="0";var out2=[];var t="0";var ten="0";
    if(chk(str0,"my",gPc)){sg=plus(sg,""+truncInv(str0).length);str0=trunc(str0)+truncInv(str0)}
    if(chk(str1,"my",gPc)){sg=plus(sg,""+truncInv(str1).length);str1=trunc(str1)+truncInv(str1)}
    sg=parseInt(sg);
    var out="0";var out1=[];var ten="0";var t="0";
    for(var i=str1.length-1;i>-1;i--){
      if(out1[i]==undefined){out1[i]=""+addSign("0",str1.length-(i+1))}
      for(var j=str0.length-1;j>-1;j--){
        t=plus(miniM(str1[i],str0[j]),ten);ten="0";
        if(mx(t,"9")=="><"&j!=0){ten=t[0];t=t[1]}
        out1[i]=t+out1[i];t="0";
      }
    }
    for(var i=0;i<out1.length;i++){out=plus(out,out1[i],"n")}
    if(sg!="0"){out=out.slice(0,out.length-sg)+gPc+out.slice(out.length-sg,out.length+1)}
    while(out[0]=="0"&out[1]!=gPc&out.length>1&zr){out=out.slice(1,out.length+1)}
    var dt1=Date.now();alert("Function is end.\nTime: "+(dt1-dt0)+" ms");
    return m+fFix(out);
  }
}
Тут многое непонятно, это и понятно Ведь очень много моих функций, если понадобится могу рассказать что не понятно. Еще я пытался делать деление, это вообще ужас, до сотого знака после десятичной запятой примерно секунды 3. Меня интересует можно ли быстрее? Алгоритмы может какие-нибудь, а то тут умножение в столбик реализовано.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2013, 03:31
Ответы с готовыми решениями:

Результат умножения чисел. Проверить код
дано два целых числа через пробел, результат одно целое число, результат умножения этих чисел. вот мой код: var a,b:integer; ...

Вывести результат умножения на 2, для N чисел
Вам предоставляется N целых чисел. Пожалуйста, выведите результаты умножения этих чисел на 2. Формат входных данных В первой...

Вычислить произведение чисел, не используя операции умножения
Составьте программу, вычисляющую А*В, не пользуясь операцией умножения. А и В любое натуральное число. (желательно каждую строчку...

2
Иллюзионист
 Аватар для philin
154 / 153 / 27
Регистрация: 02.10.2013
Сообщений: 330
19.12.2013, 11:16
Есть несколько готовых библиотек, можно подсмотреть их решения: bigInt, bignumber. Пробежался глазами по bignumber - там сделано примерно то же, только число разложено на массив по 1 цифре в элемент.Это куда быстрее работы со строками)
1
6 / 6 / 2
Регистрация: 03.08.2013
Сообщений: 56
19.12.2013, 15:55  [ТС]
Точно! Что-то про массивы я и позабыл. Спасибо огромное! Буду сидеть придумывать методы еще)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.12.2013, 15:55
Помогаю со студенческими работами здесь

Вычислить произведение 2-х n и m чисел без использования операции умножения
Подсказка:использовать цикл суммирования n раз числа m. Помогите,пожалуйста!

напечатать квадрат натуральных чисел от 1 до n без операции умножения
Квадраты натуральных чисел Составить программу, позволяющую напечатать квадрат натуральных чисел от 1 до n без операции умножения: 12=1,...

Напечатать квадрат натуральных чисел от 1 до n без операции умножения
Напечатать квадрат натуральных чисел от 1 до n без операции умножения.

Вычислить произведение двух чисел без использования операции умножения
Усердно грызу (по мере наличия свободного времени) книжку &quot;Песни о Паскале&quot;, хочу все таки научится чему нибудь. Вот такое задание: Пусть...

Перегрузить операции сложения, вычитания, деления и умножения комплексных чисел
Доброго времени суток. Помогите разобраться с перегрузкой метода. Суть в том, что необходимо перегрузить операции сложения, вычитания,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru