Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 9
1

Остаток от деления больших чисел в массивах

27.04.2013, 22:42. Просмотров 657. Ответов 0
Метки нет (Все метки)

Пытаюсь реализовать полностью рабочий шифр Диффи-Хеллмана. Возведение в большую степень реализовал, но вот как реализовать получение остатка от деления - не знаю. Были мысли делить поразрядно, но это слишком трудоемко, по моему мнению. Поэтому прошу вашей помощи, как можно реализовать остаток от деления двух больших чисел, содержащихся в массивах? И еще, в коде есть одна неточность, из-за которой в произведении получается много нулей, а уже потом идет само произведение. Я знаю, что это из-за
C++
1
sizeRez
, но как вычислить именно то значение sizeRez, чтобы оно идеально подходило? Код не совсем маленький, поэтому спрячу его под спойлер.
Кликните здесь для просмотра всего текста

C++
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(){
    int shift=0, temp, firstNumVal, numVal, sizeRez, countNum;
    string firstNum, secondNum, rezfirst, rezsecond;
    firstNum="11";
    secondNum="11";
    ostringstream ss;
    for (int k=1; k<100; k++)
    {
    sizeRez=firstNum.length()+secondNum.length();
    int* product = new int  [sizeRez];
    memset(product, 0, sizeRez*sizeof(int));
    for (int f=firstNum.length(); --f>=0;)
    {
        firstNumVal=firstNum[f]-'0';
        countNum=shift;
        for (int s=secondNum.length(); --s>=0;)
        {           
            numVal=firstNumVal*(secondNum[s]-'0');
            product[countNum]    += numVal%10;
            if (product[countNum]>=10) 
                {product[countNum]-=10; ++product[countNum+1];}
            product[countNum+1]  += numVal/10;
            if (product[countNum+1]>=10) 
                {product[countNum+1]-=10;; ++product[countNum+2];}
            ++countNum;
        }
        ++shift;
    }
    shift=0;
    countNum=0;
    firstNum.clear();
    ss.str(string());
    for (int i=sizeRez; --i>=0;){
        ss<<product[i];
        product[i]=0;
    firstNum=ss.str();
    }
    }
    for (int i=95; i<sizeRez; i++)
    {
        rezfirst[i-95]=firstNum[i];
        cout<<firstNum[i];
    }
    cout<<endl<<endl;
    firstNum="2";
    secondNum="2";
    for (int k=1; k<256; k++)
    {
    sizeRez=firstNum.length()+secondNum.length();
    int* product = new int  [sizeRez];
    memset(product, 0, sizeRez*sizeof(int));
    for (int f=firstNum.length(); --f>=0;)
    {
        firstNumVal=firstNum[f]-'0';
        countNum=shift;
        for (int s=secondNum.length(); --s>=0;)
        {           
            numVal=firstNumVal*(secondNum[s]-'0');
            product[countNum]    += numVal%10;
            if (product[countNum]>=10) 
                {product[countNum]-=10; ++product[countNum+1];}
            product[countNum+1]  += numVal/10;
            if (product[countNum+1]>=10) 
                {product[countNum+1]-=10;; ++product[countNum+2];}
            ++countNum;
        }
        ++shift;
    }
    shift=0;
    countNum=0;
    firstNum.clear();
    ss.str(string());
    for (int i=sizeRez; --i>=0;){
        ss<<product[i];
        product[i]=0;
    firstNum=ss.str();
    }
    }
    for (int i=178; i<sizeRez; i++)
    {
        rezsecond[i-178]=firstNum[i];
        cout<<firstNum[i];
    }
 
    cout<<endl; system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2013, 22:42
Ответы с готовыми решениями:

Остаток от деления больших чисел
Всем доброго дня! Раньше не понимал, для чего нужно знать столько типов, и их диапазон, но вот уже...

Как найти остаток от деления очень больших чисел
Есть очень большое целое число x (1 ≤ x &lt; 10^100000) нужно найти остаток от деления этого числа на...

Для двух целых чисел найти остаток и частное от целочисленного деления, частное от вещественного деления
Уважаемые форумчане помогите пожалуйста с двумя программами. Это вопрос жизни и отчисления, я...

остаток от деления чисел Катлана
Народ, кто шарит в математике, как прикрутить на каждую итерацию остаток от деления в такой...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2013, 22:42

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Остаток от деления дробных чисел
Помогите, пожалуйста, найти остаток от деления дробного числа типа float или double.

Найти остаток от деления чисел
Здравствуйте, дана задача &quot;Найти остаток от деления числа 2791 - 2 на 70&quot;, собственно...

Вывести остаток от деления двух чисел
Подскажите каким образом реализовать вывод остатка от деления на экран. Код калькулятора include...

Найти остаток от деления двух действительных чисел
2) Составить блок-схему и написать программный код со- гласно условию задачи: Найти остаток от...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.