如何在不使用“long”的情况下对2个大数进行求和和乘法?
它必须与数组对吗? 所以..想象我做18 + 18的总和:
18
+15
array1 (1,8)
array2 (1,5)
我需要按照colmn ... 8 + 5 = 13 - >列进行操作。 3和1 + 1 + 1(第3个'1'将来自溢出)。
..所以我需要为数组中的每个元素执行此操作
#include <stdio.h>
#include <conio.h>
#include <vectors.h>
int main()
{
int array1 ???
int array2 ???
printf("first number");
scanf();
printf("second number");
scanf();
printf("To Sum Enter 'S', to Multiply Enter 'M'");
scanf();
If(M){
//波纹管代码错误,因为我仍然需要使用“长”属性...
while(i=1,i<LA2,i++){
while(j=1,j<LA1,j++){
A1[i]*A2[j]*10^(i+j-2);
}
}
}
If(S){
while(i=1,i<LA2,i++){
while(j=1,j<LA1,j++){
A1[i]*A2[j]*10 pow(i+j-2);
//不能用pow()做这个,因为我不能使用“long”,这意味着不得不在数组中逐个元素地执行它并将结果呈现在第3个数组中
}
}
}
}
答案 0 :(得分:1)
如果您不想使用struct
,则可以使用两个整数创建long
。
像这样:
struct BigInteger{
int lowerInt;
int upperInt;
};
然后,您可以根据各种算法对这些结构进行加,减,乘或除。例如,要乘以,可以使用Shift-And-Add乘数算法。
但这样做有严重的性能问题。使用完整的语言而不是限制自己。
PS:这是什么语言问题? C或C ++?