如何在C / C ++中快速处理大整数?

问题描述 投票:0回答:1

我正在用C编写代码,该代码生成Big Integer数字,将其保存在数组中,然后,执行一些基本操作,例如乘法或加法。我真的很担心实际代码的性能,我想问您一些技巧或改进以使其更快(欢迎提出任何建议,即使它更改了我的整个代码或数据类型)。

我将在下面的代码中添加一些代码,以便您可以看到我正在使用的结构以及我如何尝试处理此B.I.N。:

unsigned int seed;


void LongNumInit( char *L, unsigned N )
{
  for ( int i=0; i< N; i++ ) 
  {
    L[i] = myRandom() % 10;  // 0 to 9 value
  }
}


char LongNumAddition( char *Vin1, char *Vin2, char *Vout, unsigned N )
{
  char CARRY = 0;
  for ( int i=0; i< N; i++ ) 
  {
    char R = Vin1[i] + Vin2[i] + CARRY;
    if ( R <= 9 )
    {
      Vout[i] = R; CARRY = 0;
    }
    else
    {
      Vout[i] = R-10; CARRY = 1;
    }
  }
  return CARRY;
}



int main(int argc, char **argv)
{
int N=10000;
unsigned char *V1= (unsigned char*) malloc( N*sizeof(unsigned char) );
unsigned char *V2= (unsigned char*) malloc( N*sizeof(unsigned char) );
unsigned char *V3= (unsigned char*) malloc( N*sizeof(unsigned char) );

LongNumInit ( V1, N ); LongNumInit ( V2, N );

LongNumAddition ( V1, V2, V3, N );
}

谢谢您的帮助,希望您现在身体健康!

c arrays integer
1个回答
0
投票

您可以使用快速傅立叶变换进行优化。在Google上搜索它,然后您可以获得一些示例。

© www.soinside.com 2019 - 2024. All rights reserved.