Деление больших чисел занимает много времени - C (СИ)
Формулировка задачи:
Привет всем. Написал функцию для деления больших чисел, но к сожалению вычисления идут очень долго. Может кто-нибудь помочь с переделкой этой функции ?
Вот вспомогательные функции
int Div(int *S, int *S1, int n, int n1, char A[], char B[]) { int t = SizeOfDec(n, n1); int *S3 = S, i = 0, *S31, *S11; int u = ComparingNumber(S, S1, n, n1); for (; u>0; i++) { S3 = Dec(S3, S1, n, n1, t); for (long long int i = t - 1; i >= 0; i--) { if (S3[i] == 0) { t--; } if (S3[i] != 0)break; } S31 = TurnArray(S3, t); ///PrintArray2(S31, t); ///printf("\n"); S11 = TurnArray(S1, n1); ///PrintArray2(S11, n1); ///printf("\n"); u = ComparingNumber(S31, S11, t, n1); } return i; }
int ComparingNumber(int *S1, int *S2, int n, int n1) { int t; if (n > n1) t = 1; if (n < n1) t = 0; if (n == n1) { for (int i = 0; i <n; i++) { if (S1[i]>S2[i]) { t = 1; break; } if (S1[i] < S2[i]) { t = 0; break; } if (S1[i] == S2[i]) { t = -1; } } } return t; } int* TurnArray(int *S, int n) { int* S3 = (int*)malloc(sizeof(int)*n); for (int i = 0, i1 = 1; i<n; i++, i1++) { S3[i] = S[n - i1]; if (S[n-i1] < 0) S3[i] = 0; } return S3; }
Решение задачи: «Деление больших чисел занимает много времени»
textual
Листинг программы
int ComparingNumber(int *S1, int *S2, int n, int n1) { int res; if (n < n1) res = -1; else if (n > n1) res = 1; else res = memcmp(S1, S2, n * sizeof(*S1)); return res; }
Объяснение кода листинга программы
В данном коде представлена функция с именем ComparingNumber, которая принимает четыре аргумента:
- S1 - указатель на первый массив.
- S2 - указатель на второй массив.
- n - размер первого массива в элементах.
- n1 - размер второго массива в элементах. Далее в функции происходит сравнение двух массивов по элементам:
- Если размер первого массива меньше размера второго, то в переменную res записывается значение -1.
- Если размер первого массива больше размера второго, то в переменную res записывается значение 1.
- В противном случае, происходит сравнение элементов массивов с использованием функции memcmp. Значение -1, 0 или 1 записывается в переменную res. В итоге, функция возвращает найденное значение в переменной res.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д