`
ikon
  • 浏览: 102541 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

计算任意2个正整数的乘积

 
阅读更多

接上一篇整数的阶乘算法,来计算2个正整数的乘积;

算法如下:

  1. 用被乘数的右边第一位去乘乘数,每位的结果放入集合;然后从低位到高位进行满十进位;
  2. 用被乘数的右边第二位去乘乘数,每位的结果向左错一位放入集合;然后从低位到高位进行满十进位;
  3. 以此类推。。。。

具体代码如下:

 

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));	
		
	}
}

 

0
1
分享到:
评论
2 楼 ikon 2011-11-13  
两个乘数没有转成integer,而是当成字符串;BigInteger确实封装了,我修改下;
1 楼 kidding87 2011-11-12  
效率不是很高,思路没有问题,但是你的两个乘数输入都都转为Integer么,Integer的范围不够吧
java里面已经有对这个的算法的封装了,看看BigInteger的方法吧

相关推荐

    两个十进制数相乘并显示乘积

    实现一多位十进制数和一个一位十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,结果以十进制数形式显示在屏幕上。

    B.zip_site:www.pudn.com

    给定任意两个高精度正整数a、b,计算a与b的乘积。 Input 输入文件中有若干行,每一行上有两个用字符串表示的正整数a,b。 输入直到文件结束。 Output 对每个输入行上的两个正整数a,b,在一行上先输出形式a*b=,...

    C++自定义API函数实现大数相乘算法

    普通的乘法计算用int、long、double都可以解决,但有时候需要处理的数字过大,从而产生溢出,以下是实现任意长度的正整数A*B的算法,即大数相乘,这个算法比较简单易懂,思路如下: 1、在主函数用char型数组a和b分别...

    世界500强面试题.pdf

    1.3.10. 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相 邻(上下左右)某一个元素也加一 ................................................................... 63 1.4. 面试题集合(三) ......

    C++课程设计题目源代码

    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的...

    LINGO软件的学习

    例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...

    C程序范例宝典(基础代码详解)

    实例022 求一个正整数的所有因子 27 实例023 一元钱兑换方案 28 实例024 对调数问题 29 实例025 数平方和运算的问题 30 1.5 数组 31 实例026 逆序存放数据 32 实例027 相邻元素之和 33 实例028 选票...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例080 使用正则表达式验证非零的正整数 96 实例081 使用正则表达式验证非零的负整数 97 3.6 常用字符验证技巧 98 实例082 使用正则表达式验证大写字母 98 实例083 使用正则表达式验证小写字母 99 实例084 使用正则...

    华为编程开发规范与案例

    1 逻辑类问题(A类)-指设计、编码中出现的计算正确性和一致性、程序逻辑控制等方面出现的问题,在系统中起关键作用,将导致软件死机、功能正常实现等严重问题; 接口类问题(B类)-指设计、编码中出现的函数和...

    C#编程经验技巧宝典

    98 &lt;br&gt;0153 如何自定义数字小数点左边分组位数 98 &lt;br&gt;0154 格式化输入数据为货币格式 99 &lt;br&gt;0155 如何计算两个整数的乘积 99 &lt;br&gt;0156 如何将二进制数转换为十进制数 100 &lt;br&gt;0157 如何...

Global site tag (gtag.js) - Google Analytics