大整数相乘-Java代码-按位相乘法解决

大整数相乘-Java代码-按位相乘法解决,第1张

文章目录
  • 一、大整数相乘
  • 二、按位相乘
    • 1.算法描述
    • 2.Java代码
  • 三、结果

一、大整数相乘

在计算机中数据的类型是有上下限的,往往大整数相乘的时候计算机计算错误,所以我们需要构建一个新的算法计算大整数相乘。

二、按位相乘 1.算法描述

两个数中的每一位彼此相乘,然后将相同列的结果加起来,统一进位得出结果。



实例1:

算法步骤:
S1:输入两个大整数
S2:数X乘数Y的第j位(j从1开始),得出结果zi,j++
S3:判断j是否大于m,是执行S4,否返回S2

S5:输出Z

2.Java代码

代码如下(示例):

package method_1;
import java.util.*;
//1900710302hcl
public class method1 {
	//int[] X,Y;
	public static void main(String[] args) {
		Scanner s1 = new Scanner(System.in);  
        System.out.print("输入第一个数X:");  
        int X = s1.nextInt();  
//        System.out.print("输入第一个数X的长度:");  
//        int n = s1.nextInt();  
        System.out.print("输入第二个数Y:");  
        int Y = s1.nextInt();    
        System.out.print("输入第二个数Y的长度:");  
        int m = s1.nextInt(); 
//        System.out.println("第一个数X:" + X + "  第二个数Y:" + Y );  

        s1.close();         //若没有关闭Scanner对象将会出现警告
//        int max;
//        max = n>m?n:m;//
        int i,a,b;double k1=10;
        int[] z=new int [m];
        for(i=1;i<=m;i++)
        {
        	double temp =(Math.pow(k1,i-1));
        	b=(int)(Y/temp);
        	a=b%10;
//        	System.out.print("输出a:"+a+"  输出b:"+b+"\n");
        	//a 第i位上的数,b 去掉第i位往后的数
        	z[i-1]=X*a;//
//        	System.out.print("输出Zi的第i个数:"+i+" — "+z[i-1]+"\n");
        }
        int Z=0;
        for(i=0;i<m;i++)
        {
        	double temp =(Math.pow(k1,i));
//        	System.out.print("输出temp:"+temp+"\n");
        	Z=(int)(Z+z[i]*temp);//
//        	System.out.print("输出Z:"+Z+"\n");
        }
        System.out.println("X*Y=:"+Z);  
        
	}
}


三、结果

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/877562.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存