毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> net技术 >> 正文

C#高效的极大数乘法和加法源代码

更新时间:2013-5-28:  来源:毕业论文

C#高效的极大数乘法和加法源代码

看了很多人写的大数相乘的代码,感觉纯粹意义的计算乘法让人很是崩溃,既然乘法竖式的计算原本就是多个积相加,为什么还要搞的那么复杂呢。
原理如下:

         1 2 3
    *     5 6
------------------------
        7 3 8
+     6 1 5 
------------------------
=     6 8 8 8

那么就是说只需要计算每位的积即可:即123*6=738;123*5=615;738+625*10=6888;
那么加法的效率大家都能做到很高效。这样大数的乘法就变成了大数乘以一个个位数了。
so:
数学乘法 从小学开始就一直是基于加法的,所以,我写了一个基于加法的大数乘法。扩展方法省去了类型转换的损耗,

原理如下:

         1 2 3

      *     5 6

------------------------

           7 3 8

+     6 1 5  0  这里加个0

-------------------------

=     6  8 8 8

 

好,直接上代码

 

 

[csharp] view plaincopyprint?
01.using System.Text; 
02. 
03.namespace LongNumber 
04.{ 
05.    public static class LongNumberHelper 
06.    { 
07.        /// <summary>  
08.        /// 大数相乘  
09.        /// </summary>  
10.        /// <param name="s1"></param>  
11.        /// <param name="s2"></param>  
12.        /// <returns></returns>  
13.        public static string LongNumberMul(string s1, string s2) 
14.        { 
15.            string result = ""; 
16.            for (int i = s2.Length - 1; i >= 0; i--) 
17.            { 
18.                var s = StrMulChar(s1, s2[i], s2.Length - 1 - i);//计算s2每个数的乘积并给结果加足够的0  
19.                result = LongNumberAdd(result, s);//结果集累加  
20.            } 
21.            return result; 
22.        } 
23.        /// <summary>  
24.        /// 分步计算并进位&n

[1] [2] [3] [4] [5] 下一页

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。