如何在不使用“长”的情况下进行2个大数的求和和乘法?

时间:2013-01-06 11:00:20

标签: c++

如何在不使用“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个数组中

        }
        }


    }

}

1 个答案:

答案 0 :(得分:1)

如果您不想使用struct,则可以使用两个整数创建long

像这样:

struct BigInteger{
  int lowerInt;
  int upperInt;
}; 

然后,您可以根据各种算法对这些结构进行加,减,乘或除。例如,要乘以,可以使用Shift-And-Add乘数算法。

但这样做有严重的性能问题。使用完整的语言而不是限制自己。

PS:这是什么语言问题? C或C ++?