DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

ДОСЛІДЖЕННЯ ШВИДКОДІЇ ВИКОНАННЯ МУЛЬТИПЛІКАТИВНИХ ОПЕРАЦІЙ З ДОВГИМИ ЧИСЛАМИ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Захист інформації
Група:
ІБ – 44

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра «Захисту інформації» Звіт Про виконання лабораторної роботи #2 На тему: “ ДОСЛІДЖЕННЯ ШВИДКОДІЇ ВИКОНАННЯ МУЛЬТИПЛІКАТИВНИХ ОПЕРАЦІЙ З ДОВГИМИ ЧИСЛАМИ ” Львів-2009 Мета роботи. Вивчити способи представлення та алгоритми для виконання операцій введення-виведення, порівняння, підсумовування, віднімання довгих чисел та навчитися розробляти програмне забезпечення для реалізації перерахованих алгоритмів на комп’ютері. Завдання. Номер з/п Варіант представлення числа Заповнення невикористаних розрядів Операції з довгими числами  2 2 -1 Віднімання, менше  Мультиплікативна операція: швидке множення Виконання роботи. Текст програми #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LEN 50 #define OSN 10000 void InputNum(const char *str, long a[MAX_LEN]) { int j,i=strlen(str); long ln; char *tmp=(char*)malloc(i>>3<<2+8); strcpy(tmp, str); j=0; do { tmp[i]=0; i-=4; if(i<0) i=0; sscanf(&tmp[i], "%d", &ln), a[MAX_LEN - ++j]=ln; } while (i); while (j<MAX_LEN) a[MAX_LEN - ++j]=-1; free(tmp); } void OutputNum(long a[MAX_LEN]) { int i,fn=0; while (fn<MAX_LEN && a[fn]==-1) fn++; if(fn==MAX_LEN) return; for (i=fn;i<MAX_LEN; i++) printf((i==fn) ? "%d" : "%04d", a[i]); } int Less(long a[MAX_LEN], long b[MAX_LEN]) { int i=-1; while (++i<MAX_LEN) if (a[i]==b[i]) continue; else return a[i]<b[i] ? 1 : -1; return 0; } int SubNum(long ta[MAX_LEN], long tb[MAX_LEN], long c[MAX_LEN]) { long *a, *b, tmp; int j,i,to=MAX_LEN-1,minus=0; if (Less(ta,tb)==1) a=tb, b=ta, minus=1; else a=ta, b=tb; for (i=0;i<MAX_LEN;i++) c[i]=a[i]; for (i=MAX_LEN-1; ; i--) { if (b[i]==-1) break; tmp=c[i]-b[i]; if(tmp<0) { tmp+=OSN, j=i; while (c[j-1]-1<0 && j>0) c[j-1]+=-1+OSN, j--; c[j-1]--; } c[i]=tmp; } i=0; while (c[i]<=0 && i<MAX_LEN-1) c[i++]=-1; return minus; } int main() { char *szA=(char*)malloc(500); char *szB=(char*)malloc(500); int g; long a[MAX_LEN], b[MAX_LEN], c[MAX_LEN]; printf("a = "), scanf("%s", szA), printf("b = "), scanf("%s", szB); InputNum(szA,a), InputNum(szB,b); g=SubNum(a,b,c); printf("a - b = "); if(g) printf("-"); OutputNum(c); printf("\n"); free(szA), free(szB); return 0; } Результат виконання. 66555221236121 12312464143123 a-b=54242757092998 Блок-схеми підпрограм та функцій. А) Блок-схема алгоритму введення довгого числа.  Б) Алгоритм виведення довгого числа.  В) Блок-схеми алгоритмів порівняння довгих чисел.  В) Блок-схема алгоритму швидкого множення двох довгих чисел.  Список ідентифікаторів констант, змінних, процедур і функцій, використаних у блок-схемах алгоритмів і програм, та їх пояснення. МахLen Максимальна довжина матриці  Osn Основа ділення  InputNum Функція введення довгого числа  OutputNum Функція виведення довгого числа  Less Функція порівняння «менше»  SubNum Функція віднімання 2х довгих чисел  Main Основна функція   Tmp Змінна для тимчасового зберігання даних  I,J Рахівники  A[MaxLen] Матриця, заповнюєма довгими числами  Fn Значення даного елементу масиву  Minus Значення, яке повертає функція SubNum, - є результатом віднімання двох довгих чисел  szA Розмір пам’яті для А  szB Розмір пам’яті для В   Висновок: На цій л.р. я досліджував методи множення довгих чисел та їхню швидкодію. Також було виявлено, що метод «ШВИДКОГО МНОЖЕННЯ» є дійсно швидким.
Антиботан аватар за замовчуванням

29.12.2011 17:49

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!