- 一、大整数相乘
- 二、按位相乘
- 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);
}
}
三、结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)