大整数相乘------java实现
来源:互联网 发布:程序员需要看哪些书 编辑:程序博客网 时间:2024/05/17 07:50
大数相乘算法实现:(Java版,使用BigInteger)(含有大数的加、减、乘、除)
package com.bigInteger;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.math.BigInteger;/******************************************************************* * 功能描述: * 创建信息:jtm 2016-4-1 * 修改信息: ********************************************************************/public class BigIntegerFunc {public static void main(String[] args) throws IOException {//获取用户的输入信息BufferedReader br=new BufferedReader(new InputStreamReader(System.in));String str1=null;String str2=null;System.out.print("第一个乘数是:");str1 =br.readLine();System.out.print("第二个乘数是:");str2 =br.readLine();BigNumMutiply(str1, str2);}private static void BigNumMutiply(String str1, String str2) {// TODO Auto-generated method stubBigInteger bigNum1 =new BigInteger(str1);BigInteger bigNum2 =new BigInteger(str2);BigInteger sumNum =bigNum1.add(bigNum2);//大数相加BigInteger subNum =bigNum1.subtract(bigNum2);//大数相减BigInteger mutiNum =bigNum1.multiply(bigNum2);//大数相乘BigInteger divNum =bigNum1.divide(bigNum2);//大数相除BigInteger remNum =bigNum1.remainder(bigNum2);//大数取余System.out.println("加"+sumNum+"减"+subNum+"乘积"+mutiNum+"除"+divNum+"余"+remNum);}}
大数相乘算法实现2-----不是用BigInteger
package com.bigInteger;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;/*** * 大数相乘 * ***************************************************************** */public class bigInteger {public static void main(String[] args) throws IOException{BufferedReader br=new BufferedReader(new InputStreamReader(System.in));String str1=null;String str2=null;System.out.print("第一个乘数是:");str1 =br.readLine();System.out.print("第二个乘数是:");str2 =br.readLine();BigNumMutiply(str1, str2);}public static void BigNumMutiply(String str1,String str2){System.out.print("大数相乘:\n" + str1 + "*" + str2 + "="); int temp=0;//用于记录输入大数的正负号个数if(str1.charAt(0)=='-'){//判断str1代表的数值的正负,如果负,删除负号,temp++StringBuffer sb1=new StringBuffer(str1);sb1.delete(0, 1);str1=sb1.toString();temp++;}if(str2.charAt(0)=='-'){//判断str2代表的数值的正负,如果负,删除负号,temp++StringBuffer sb2=new StringBuffer(str2);sb2.delete(0, 1);str2=sb2.toString();temp++;}//将字符串转为字符型数组,并反转char[] a=new StringBuffer(str1).reverse().toString().toCharArray(); char[] b=new StringBuffer(str2).reverse().toString().toCharArray();int lenA =a.length;int lenB =b.length;//常识:一般两个数相乘,结果长度不大于两个乘数的长度之和int len =lenA+lenB;//初始化乘数结果int[] result =new int[len];// 计算结果集合 for (int i = 0; i < a.length; i++) { for (int j = 0; j < b.length; j++) { result[i + j] += (int) (a[i] - '0') * (int) (b[j] - '0'); } } //处理结果集合,如果是大于10的就向前一位进位,本身进行除10取余 for (int i = 0; i < result.length; i++) { if (result[i] > 10) { result[i + 1] += result[i] / 10; result[i] %= 10; } } StringBuffer sb = new StringBuffer(); //判断有没有前置的0,有的话跳过 for (int i = len - 1; i >= 0; i--) { if (result[i] == 0) { continue; } sb.append(result[i]); } if(temp==0||temp==2){//判断最后大数相乘的正负 System.out.println(sb.toString()); }else{ sb.insert(0,'-'); System.out.println(sb.toString()); }}}
0 0
- Java实现大整数相乘
- 大整数相乘------java实现
- 大整数相乘算法-Java实现
- 大整数相乘(数组实现)
- 实现两个大整数相乘
- 分治算法-大整数相乘(JAVA实现)
- python实现大整数相乘---格子乘法
- Java任意两个大整数相乘
- java程序计算两个大整数相乘
- poj2389(java大整数相乘)
- 大整数相乘问题
- 大整数相乘算法
- 大整数相乘算法!
- 大整数相乘
- 大整数相乘算法
- 大整数相乘
- 大整数相乘
- 大整数相乘
- 参考sqlalchemy.pool自写连接自动回收
- javascript继承实现
- Android Loader详解
- 百度地图隐藏缩放控件比例尺Logo
- selenium+webdriver+python 中警告框的处理方法
- 大整数相乘------java实现
- AndroidStudio简单的apk混淆
- js根据不一样的移动设备调整到相应的页面
- TRUNCATE TABLE 与 DELETE在删除整个表的所有记录时的区别
- address of local variable 'pbuf' returned
- 116. Populating Next Right Pointers in Each Node
- 电脑维修
- PreCreateWindow作用
- spring的BeanFactory原理模拟