- 浏览: 102541 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (99)
- 经济 (1)
- dwr (2)
- 测试 (0)
- java (29)
- resin (1)
- oracle (3)
- 感悟 (1)
- jvm (15)
- mina2 (5)
- j2se (12)
- linux (28)
- protobuf (1)
- tcp/ip (0)
- jdbc (0)
- 数据库 (4)
- 游戏 (0)
- 技术文档 (1)
- nosql (2)
- 算法 (2)
- apache (2)
- mysql (1)
- hashcode (1)
- spring (2)
- quartz (5)
- netcat (2)
- 分页 (1)
- 正则 (0)
- shell (1)
- lsof (1)
- nginx (1)
- git (1)
最新评论
-
fys124974704:
你试下将第三条写成以下这样,你会发现你的结论不对:select ...
ORACLE分页SQL语句 -
ikon:
两个乘数没有转成integer,而是当成字符串;BigInte ...
计算任意2个正整数的乘积 -
kidding87:
效率不是很高,思路没有问题,但是你的两个乘数输入都都转为Int ...
计算任意2个正整数的乘积 -
k1280000:
------------------------同意!
学习之道
接上一篇整数的阶乘算法,来计算2个正整数的乘积;
算法如下:
- 用被乘数的右边第一位去乘乘数,每位的结果放入集合;然后从低位到高位进行满十进位;
- 用被乘数的右边第二位去乘乘数,每位的结果向左错一位放入集合;然后从低位到高位进行满十进位;
- 以此类推。。。。
具体代码如下:
package com.datastruct.array; import java.util.ArrayList; import java.util.List; /** * 计算任意2个正整数相乘 * @author ikon * */ public class Multi { public static void main(String[] args){ ConsoleReader console = new ConsoleReader(System.in); System.out.print("请输入乘数 : "); String num1 = console.readLine(); System.out.print("请输入被乘数 : "); String num2 = console.readLine(); List<Integer> datas = new ArrayList<Integer>(); int digit = num2.length(); for(int i=0;i<digit;i++){ int num2i = Integer.parseInt(num2.substring(digit-1-i, digit-i)); for(int j=0;j<num1.length();j++){ int num1i = Integer.parseInt(num1.substring(num1.length()-1-j, num1.length()-j)); if(datas.size()==(j+i)){ datas.add(0); } datas.set(i+j, datas.get(i+j)+num1i*num2i); } for(int j=0;j<datas.size();j++){ if(datas.get(j)>9){ if(datas.size()==j+1){ datas.add(j+1,0); //这里要注意进位,调用add } datas.set(j+1, datas.get(j+1)+datas.get(j)/10); datas.set(j, datas.get(j)%10); } } } System.out.print(num1+"*"+num2+"="); for(int index=datas.size()-1;index>-1;index--){ System.out.print(datas.get(index)); } } }
BigInteger补充:
package com.datastruct.array; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; /** * 计算任意2个正整数相乘 * BigInteger版 * @author ikon * */ public class MultiBigInteger { public static void main(String[] args){ ConsoleReader console = new ConsoleReader(System.in); System.out.print("请输入乘数 : "); String num1 = console.readLine(); System.out.print("请输入被乘数 : "); String num2 = console.readLine(); BigInteger a = new BigInteger(num1); BigInteger b = new BigInteger(num2); System.out.print(num1+"*"+num2+"="+a.multiply(b)); } }
评论
2 楼
ikon
2011-11-13
两个乘数没有转成integer,而是当成字符串;BigInteger确实封装了,我修改下;
1 楼
kidding87
2011-11-12
效率不是很高,思路没有问题,但是你的两个乘数输入都都转为Integer么,Integer的范围不够吧
java里面已经有对这个的算法的封装了,看看BigInteger的方法吧
java里面已经有对这个的算法的封装了,看看BigInteger的方法吧
发表评论
-
Quartz定时任务学习(一)简单任务
2012-04-27 12:30 842学习quartz首先了解三个概念: 调度器:负责调度作 ... -
介绍Quartz
2012-04-27 12:22 1411介绍Quartz Quartz是一个开源的任务调度 ... -
理解Quartz触发器(1)
2012-04-27 11:37 865Quartz中一个Job往往是 ... -
Quartz中SimpleTrigger的探讨
2012-04-27 11:34 7041.来写一个每隔10秒启动一次任务的例子. import j ... -
理解Java对象序列化
2012-02-15 09:38 696关于Java序列化的文章早 ... -
认识Arrays(一)打印
2012-02-03 16:52 571Arrays提供了一组操作array的静态方法。 一、基本类 ... -
oracle java数据类型对应表
2011-12-05 13:37 0[img]http://dl.iteye.com/upload ... -
计算任意正整数的阶乘
2011-11-12 20:17 667由于阶乘的结果会超出java数据类型的最大范围,所 ... -
Java调用外部程序技巧
2011-11-08 09:17 796前些天使用Java调用外部程序的时候,发现线程会堵塞在wa ... -
多核平台下的JAVA优化
2011-11-08 09:12 631现在多核CPU是主流。利用多核技术,可以有效发挥硬件的能力 ... -
使用 Eclipse Memory Analyzer 进行堆转储文件分析
2011-11-07 17:09 772http://www.ibm.com/developerwor ... -
infoQ 文档ppt
2011-11-07 11:43 1250http://www.docin.com/app/user/c ... -
游戏性能监控
2011-11-07 10:18 01、cpu消耗(耗时)监控 在功能代码前后取时间值,相减,发 ... -
使用Cacti监控你的网络(一)- Cacti概述及工作流程
2011-11-07 09:36 675http://blog.sina.com.cn/s/b ... -
浅析 Java Thread.join()
2011-10-29 09:25 860一、在研究join的用法之前,先明确两件事情。 1.join ... -
hashmap线程不安全在哪里?
2011-10-13 11:33 1076大家都知道HashMap不是线程安全的,但是大家的理解 ... -
java面试题及答案(基础题122道,代码题19道)
2011-10-10 22:54 653http://ilovelate.itpub.net/post ... -
关于UnsupportedOperationException异常
2011-09-29 12:03 569我们在使用collection框 ... -
关注一下druid
2011-09-26 09:21 699关注一下druid,阿里开源的jdbc组件,可以监控数据库访问 ... -
字节流调试
2011-09-22 17:01 742针对后台的字节流数据调试比较麻烦,通常的做法是将刚从socke ...
相关推荐
实现一多位十进制数和一个一位十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,结果以十进制数形式显示在屏幕上。
给定任意两个高精度正整数a、b,计算a与b的乘积。 Input 输入文件中有若干行,每一行上有两个用字符串表示的正整数a,b。 输入直到文件结束。 Output 对每个输入行上的两个正整数a,b,在一行上先输出形式a*b=,...
普通的乘法计算用int、long、double都可以解决,但有时候需要处理的数字过大,从而产生溢出,以下是实现任意长度的正整数A*B的算法,即大数相乘,这个算法比较简单易懂,思路如下: 1、在主函数用char型数组a和b分别...
1.3.10. 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相 邻(上下左右)某一个元素也加一 ................................................................... 63 1.4. 面试题集合(三) ......
2、求任意n个数中的最大数和最小数:先输入一个正整数n(个数),而后再输入任意n个实数,找出这n个数中的最大数及最小数并显示出来。3、对两个有序数组进行合并:设有如下数组A、B,并假设两个数组的元素都已经有序...
如果正整数n的所有真因子的乘积不超过n,称n为简单数。令A表示所有简单数集合,既有A={2,3,4,5,6,7,8,9,10,11,13,14,15,17,19,21,…}.容易看出n有4种情形,即n=p,n=p2,n=p3,n=pq,其中p,q是不同的素数。关于简单数的性质...
在乘法数论中,在素数分解期间,用素数覆盖正整数可能被视为是并行系统的结果,当且仅当素数倒数的乘积的欧拉公式为真时,并行系统才能正常运行。 给出了质数小于或等于任意界限的精确公式。 可以使用Wolfram的...
例1.2 使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。 单 位 销地 运 价 产地 B1 B2 B3 B4 B5 B6 B7 B8 产量 A1 6 2 6 7 4 2 5 9 60 A2 4 9 5 3 8 5 8 2 55 A3 5 2 1 9 7 4 3 3 51 A4 7...
实例022 求一个正整数的所有因子 27 实例023 一元钱兑换方案 28 实例024 对调数问题 29 实例025 数平方和运算的问题 30 1.5 数组 31 实例026 逆序存放数据 32 实例027 相邻元素之和 33 实例028 选票...
实例080 使用正则表达式验证非零的正整数 96 实例081 使用正则表达式验证非零的负整数 97 3.6 常用字符验证技巧 98 实例082 使用正则表达式验证大写字母 98 实例083 使用正则表达式验证小写字母 99 实例084 使用正则...
1 逻辑类问题(A类)-指设计、编码中出现的计算正确性和一致性、程序逻辑控制等方面出现的问题,在系统中起关键作用,将导致软件死机、功能正常实现等严重问题; 接口类问题(B类)-指设计、编码中出现的函数和...
98 <br>0153 如何自定义数字小数点左边分组位数 98 <br>0154 格式化输入数据为货币格式 99 <br>0155 如何计算两个整数的乘积 99 <br>0156 如何将二进制数转换为十进制数 100 <br>0157 如何...