声明:参考博文http://blog.youkuaiyun.com/sunkun2013/article/details/11833515
最后的思想实现的大数相除,以便自己以后查阅学习,此博主给出的详细图解,参考最后一种思想实现;现给出源代码;
此思想将大数的除法转化为大数的乘法和加法运算,
比如800/7=114,余2;则
- 将被除数800和除数7通过补零的方式使其位数相同,即800/700;
- 如果补零后被除数<除数(即如果800<700),则给被除数补一个零,否则进行下一步运算;
- 循环找出 除数i(i数0~9之间的数)的结果小于被除数的最大i值,即7001=700<800<700*2=1400,此时找到的i=1;找到的i即为商的最高位数;
- 用被除数减去上述乘数结果作为下一轮的被除数;即800-700*1=100;
- 重复上述步骤,直到余数小于原始被除数为真结束;比如上述例子的长度只差为3-1=2,则此结果循环两次;
上述步骤是针对被除数比除数大的情况,其他情况比较简单,不予赘述;
Java实现大数相除代码
/**
* 两个大正数相除
* @param num1
* @param num2
* @return
*/
public static String bigPositiveDiv(String num1,String num2) {
String result = "";
int len