介绍
这期内容当中小编将会给大家带来有关怎么在c++中实现一个大数相乘算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
普通的乘法计算用int,长,双都可以解决,但有时候需要处理的数字过大,从而产生溢出,以下是实现任意长度的<>强正整数强> A * B的算法,即大数相乘,这个算法比较简单易懂,思路如下:
1,在主函数用char型数组A和B分别保存输入的数字A和B;
2,对字符串数A和B组每一位互相相乘,像小学时候学的竖式乘法,结果保存在字符串数组,但是不进行进位处理;
3,对字符串数组年代每一位进行进位处理;
4,将字符串数组年代赋给字符型数组C,返回结果。
<强> char版本:强>
//大数相乘,实现大数A * B char *, getMultiplyValue (char [], char b[]),//参数:char型数一的组数组名;参数b: char型数b组的数组名; { ,int i, j, ca, cb, * s cs; ,char * c; , ,ca=strlen(),,//求字符串数组一的长度 ,cb=strlen (b);,//求字符串数b组的长度 ,c=ca + cb,, ,年代=new int [c]; ,c=new char [c]; , ,//初始化 ,(i=0; i< cs;我+ +) ,年代[我]=0; , ,//直接纵向求和,不处理进位 ,(我=0;i另外,附上串版本的,
# include & lt; string> using namespace 性传播疾病; ,//大数相乘,实现大数A * B string getMultiplyValue (string string b),//参数:字符串型的变量名;参数b:字符串型b的变量名; { ,int i, j, ca, cb, cs, *年代; ,string 总和; , ,ca=a.length();,//求字符串一个的长度 ,cb=b.length();,//求字符串b的长度 ,年代=new int (cs=ca + cb); , , ,//初始化 ,(i=0; i< cs;我+ +) ,年代[我]=0; , ,//直接纵向求和,不处理进位 ,(我=0;i下面给出的是char版本的运行实例(string版本同理),更彻底教会大家如何使用,
# include & lt; iostream> using namespace 性传播疾病; int main () { b, char [255], [255]; , ,,,cin>的在a>的在b,,,,,,//输入数字a, b , ,cout<& lt; getMultiplyValue (a, b) & lt; & lt; endl;,//输出a * b , ,return 0; }上述就是小编为大家分享的怎么在c++中实现一个大数相乘算法了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
怎么在c++中实现一个大数相乘算法