一个简单的大数乘法算法

#include <iostream>
using namespace std;

const int N = 1000; //自定义大数的长度,可以根据需要调整

void LongMulti(char* str1,char* str2)
{
 int result[N] = {0};
 int i,j;
 int str1_lenght = strlen(str1);
 int str2_lenght = strlen(str2);
 //计算
 for(i=str1_lenght-1;i>=0;i--)
 {
  for(j=str2_lenght-1;j>=0;j--)
   result[str1_lenght-1-i + str2_lenght-1-j] += (str1[i]-'0')*(str2[j]-'0');
 }
 for(i=0;i<str1_lenght+str2_lenght-1;i++)
 {
  result[i+1] += result[i]/10;
  result[i]%=10;
 }
 if(result[i-1]>9)
 {
  result[i] /= 10;
  result[i-1] %= 10;
 }
 //输出
 int n = N-1;
 while(result[n]==0)
  n--;
 cout<<"result/>";
 for(i = n;i>=0;i--)
  cout<<result[i];
 cout<<endl;
}

int main(int argc,char *argv[])
{
 char str1[N],str2[N];
 char ch = 'y';
 while('y'==ch)
 {
  cout<<"Input a number/>";
  cin>>str1;
  cout<<"Input another number/>";
  cin>>str2;
  LongMulti(str1,str2);
  cout<<"Continue?(y/n):";
  cin>>ch;
 }
 return 1;
}

阅读更多
文章标签: 算法 input include
个人分类: 基本算法 (C++)
上一篇C/C++ 基础(持续更新中)
下一篇顺序栈
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭