C#中关于处理两个大数相乘的问题
方法一:直接利用.NET FrameWork 4.0中自带的System.Numeric类库
添加了对此类库的引用后,直接调用方法即可计算:
1 BigInteger num1 = BigInteger.Parse("乘数一");2 BigInteger num2 = BigInteger.Parse("乘数二");3 Console.WriteLine(num1* num2);4 Console.ReadKey();
方法二:自己手写一个计算的方法
思路:因为两个大数相乘,结果可能已经超过了C#定义的变量的范围,所以我们应该使用字符串代替的处理想法,将数字相乘转化为字符串的处理!具体代码如下:
1 static string getbackresult(string s1, string s2) 2 { 3 string lastResult = ""; 4 int ten1 = -1; 5 int[] result = new int[s1.Length + s2.Length];//用以记录计算结果 6 for (int i = s1.Length - 1; i >=0; i--) 7 { 8 int c1 = Convert.ToInt16(s1[i].ToString());//从s1中从后往a前取一个数并记录这个数的位置 9 ten1++;10 int resultindex = result.Length - 1 - ten1;11 for (int j = s2.Length - 1; j >=0; j--)12 {13 int c2 = Convert.ToInt16(s2[j].ToString());//从?s2中从后往前取一个数14 int cc = c1 * c2 + result[resultindex];15 if (cc > 10)16 {17 result[resultindex] = cc % 10;18 int lastindex = resultindex - 1; //往前移动一位19 int lastvalue = result[lastindex] + cc / 10; //把刚刚得到的十位的数字赋值到前面20 while (cc > 10)21 {22 cc = result[lastindex] + cc / 10;23 result[lastindex] = cc % 10;24 lastindex--;//进位25 }26 }27 else28 {29 result[resultindex] = cc;30 }31 resultindex--;//进位32 }33 }34 StringBuilder sb = new StringBuilder();35 foreach (int item in result)36 {37 sb.Append(item);38 }39 lastResult = sb.ToString();40 if (lastResult[0]=='0')41 {42 lastResult = lastResult.Substring(1);43 }44 return lastResult;45 }
转载于:https://www.cnblogs.com/Alpha-Fly/archive/2012/04/02/2429756.html
C#中关于处理两个大数相乘的问题相关推荐
- c语言实现两个大数相乘
实现两个不限位数十进制整数的乘法函数, demon #include<stdio.h> #include<string.h>int main() {int i,j,z,k;in ...
- Karatsuba乘法--实现大数相乘
Karatsuba乘法 Karatsuba乘法是一种快速乘法.此算法在1960年由Anatolii Alexeevitch Karatsuba 提出,并于1962年得以发表.此算法主要用于两个大数相乘 ...
- 高效大数乘法 c语言,华为2012校园招聘上机题——大数相乘,两个超过100位的大数相乘C语言...
这是我调试时间最长的程序,整整弄了两天才弄好,不过还有点数组下标越界的小问题没解决!但是结果是正确的! 算法思想:将两个相乘的数分别放在两个数组中,之后用一个数,逐位的乘以另一个数,在将乘积的和放在另 ...
- C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...
- c语言中大数相乘的方法,C++实现大数相乘算法
本文实例为大家分享了C++实现大数相乘的具体代码,供大家参考,具体内容如下 首先说一下乘法计算的算法:同样是模拟人工计算时的方法. 从低位向高位乘,在竖式计算中,我们是将乘数第一位与被乘数的每一位相乘 ...
- java输出两个整数的积_如何检查Java中的两个数字相乘是否会导致溢出?
如何检查Java中的两个数字相乘是否会导致溢出? 我想处理两个数字相乘导致溢出的特殊情况. 代码看起来像这样: int a = 20; long b = 30; // if a or b are bi ...
- matlab计算两向量的乘积,matlab中两个函数相乘
变量名最多不超过63个字符; ? 变量名区分大小写; ? Matlab提供的标准函数名以及命令名必须用小写字母; ? 变量名中不能包含空格.标点.运算符. 1.变量及其...... 中的元素; (2) ...
- 【Pandas】解决在pandas中的两个正数相乘结果为负值
前几天使用sklearn拟合数据,发现曲线特别离谱,找了很久的原因,最后发现是因为我在代码中对特征进行了特征之间的相乘操作,来增加特征的维度,但是两个正数相乘之后,变成了负数: 下图中 xi 为所有数 ...
- 线性代数中两个向量相乘_加两个向量| Python的线性代数
线性代数中两个向量相乘 Prerequisite: Linear Algebra | Defining a Vector 先决条件: 线性代数| 定义向量 In the python code, we ...
最新文章
- 从Varchar转换为 datetime
- Boosted Tree:一篇很有见识的文章
- raise errorclass(errno, errval) sqlalchemy.exc.InternalError: (pymysql.err.InternalError) (1366, u
- 关于质量的联想:消费示范效应
- 汽车行业持续亏损?奥迪:不存在的
- JAVA中isEmpty、null、的区别
- Marching Cubes
- z=rand()%i c语言,C语言关于产生随机数文章转载两篇(一)
- 基于小波变换的数字水印技术
- 当我在荒废时间的时候会有多少人在拼命
- win10系统服务器管理器,win10服务管理器,详细教您Win10服务管理器怎样打开
- android 11.0 去掉音量键电源键组合键的屏幕截图功能
- html 限制每行字数,毕业论文每行字数的设置
- 关于自己学习安卓的体会
- mysql sp who_sp_who使用
- 如何在以太坊网络上发布自己的代币
- UDS-RequestDownload(0x34) service
- 基金的估值原来这么简单,一文看懂
- VS2008 工程运行时候的一个R6034问题
- git clone 修改配置 设置代理 加速
热门文章
- 浅析网站SEO整站优化的优势!
- 两对光纤收发器用网线连接_光纤那么快,路由器和电脑之间为何不用光纤连接,反而用普通网线...
- 开发日记-20190712 关键词 读书笔记 《Perl语言入门》Day 8
- 鸿洋android屏幕适配四部曲-传送门
- 设计模式-策略模式,观察者模式,装饰者模式,静态工厂模式,工厂方法模式
- Excel表格快速将公式运用到一整列
- 使用netty编写IM通信界面
- BZOJ4105 THUSC2015平方运算(线段树)
- tcp/ip通信中udp头部结构udphdrp-check校验计算
- d3.js——比例尺的使用