`

java 两个大数字的相乘

    博客分类:
  • java
 
阅读更多
public testMul() throws Exception {
String p1 = "123456789012345678901234123456789012345678901234";// "123456789012345678901234";
String p2 = "987654321098765432109876543210987654123456789012345678901234";// "987654321098765432109876543210987654";
int ASCII = 48;
char[] result = new char[p1.length() + p2.length()];
for (int i = 0; i < result.length; i++) {
result[i] = '0';
}
char ctemp = ' ';
char[] pc1 = p1.toCharArray();
for (int i = 0; i < pc1.length / 2; i++) {
ctemp = pc1[i];
pc1[i] = pc1[pc1.length - 1 - i];
pc1[pc1.length - 1 - i] = ctemp;
}
char[] pc2 = p2.toCharArray();
for (int i = 0; i < pc2.length / 2; i++) {
ctemp = pc2[i];
pc2[i] = pc2[pc2.length - 1 - i];
pc2[pc2.length - 1 - i] = ctemp;
}
int temp = 0;// 临时结果
int step = 0;// 进位
int time = 0;// 次数
int bit = 0;// 位数
for (char c1 : pc1) {
time = bit;
for (char c2 : pc2) {
temp = (c1 - ASCII) * (c2 - ASCII);
temp = temp + result[time] - ASCII;
if (temp > 9) {// 进位
int i = 0;
do {
result[time + i] = (char) (temp % 10 + ASCII);
step = (temp - temp % 10) / 10;
i++;
temp = result[time + i] - ASCII + step;
} while (temp > 9);
result[time + i] = (char) (temp + ASCII);
} else {
result[time] = (char) (temp + ASCII);
}
time++;
}
bit++;
}
System.out.println("##############################");
System.out.print(p1 + " x " + p2 + " = ");
for (int i = result.length - 1; i >= 0; i--) {
System.out.print(result[i]);
}
System.out.println();
System.out.println("##############################");
}
分享到:
评论

相关推荐

    JAVA实现大整数相乘

    本篇将深入探讨如何利用Java实现两个大整数的相乘,尤其是面对1000位以上的数字时的高效算法。 首先,Java标准库提供了`java.math.BigInteger`类,它专门用于表示和操作任意大小的整数。`BigInteger`类支持所有基本...

    任意大的两个数相乘

    以下是对“任意大的两个数相乘”这个知识点的详细说明。 **大数的概念** 大数是指超过常规数据类型所能表示的最大值的整数。在大多数编程语言中,如C、C++或Java,整型变量有其最大值限制,如32位系统中的int最大值...

    大整数相乘算法 分治法

    在具体实现上,首先,输入的两个大整数会被转换成8的倍数,这是因为分治法的处理过程中,需要对每一位进行操作,8的倍数可以使处理更为简洁。接着,通过递归调用,将大整数逐步分解到单个数字的乘法,直到乘法操作...

    浅谈Java double 相乘的结果偏差小问题

    当这些不精确的数字相乘时,累积的误差可能导致结果偏离预期。 如标题和描述所示,问题在于代码`double d = 538.8; System.out.println(d * 100);`的输出不是预期的53880,而是53879.99999999999。这并不是程序错误...

    长整型相乘优化

    它将两个n位数的乘法分解为三个较小的乘法和若干次加法,复杂度为O(n^1.585),比传统的O(n^2)算法更快。基本思想是将两个数各分为高位和低位两部分,然后用这三个部分的组合进行计算。 2. **Toom-Cook算法**:与...

    大整数相乘问题--分而治之

    在这个大整数相乘的问题中,我们就是用这种策略来高效地完成乘法运算。 一、基础理论 1. 大整数:大整数是指超过普通整型数据所能表示范围的整数,通常通过数组或链表等数据结构存储。 2. 分而治之:分而治之是算法...

    大数相乘解决无限位数相乘问题

    这种技术广泛应用于金融计算、密码学、物理学模拟、工程问题等多个领域,尤其在处理无限位数(即非常大的数字)相乘时显得尤为重要。本文将深入探讨大数相乘的基本概念、算法以及其实现方法。 首先,我们要理解什么...

    android开发实现是三个数相乘计算 1

    在Android开发中,实现三个数相乘的计算是一项基本任务,尤其对于那些涉及到数学运算或者数据处理的应用来说。本节将详细讲解如何在Android环境中进行此类计算,并在此基础上拓展到计算平均值等其他数学操作。 首先...

    Rsa-java.rar_RSA verification_RSA 签名 java_rsa java 分段_rsa 数字签名_数

    1. RSA原理:RSA算法基于大数因子分解的困难性,由两个大素数p和q相乘得到模数n,再计算欧拉函数φ(n)=(p-1)(q-1),选择一个与φ(n)互质的公钥e,计算私钥d使得d·e ≡ 1 (mod φ(n))。公钥(e, n)用于加密,私钥(d...

    电子科大java实验

    1. **费波那契数列**(Fibonacci Sequence):这是一种基于递归定义的数学序列,其中每个数字是前两个数字的和。第一项和第二项分别为0和1,后续项由这两个数相加得到。例如:0, 1, 1, 2, 3, 5, 8, 13...。实验要求...

    吸血鬼算法

    吸血鬼算法 吸血鬼算法是指一种特殊的算法,它...在给定的代码中,作者使用Java语言编写了一个吸血鬼算法,使用了冒泡排序算法对字符串进行排序,并使用了条件语句来判断数字是否可以分解成两个相同长度的数字乘积。

    福州大学数字中国研究院(福建)考研复试编程参考题目.docx

    - 两个数的最大公约数和最小公倍数的乘积等于这两个数的乘积。 2. **求解方法:** - 可以使用辗转相除法(欧几里得算法)来寻找两个数的最大公约数。 - 最小公倍数可以通过两数乘积除以最大公约数得到。 3. **...

    java有理分数运算

    * multiply(Rational other):将两个有理分数相乘,并返回结果。 * divide(Rational other):将两个有理分数相除,并返回结果。 * toString():将有理分数转换为字符串形式,例如 "a/b"。 * toFloatString():将有理...

    Java实现RSA生成公钥私钥

    RSA算法基于两个大素数的乘积难以因式分解的数学难题。其基本步骤包括: 1. **选择素数**:随机选取两个大素数p和q。 2. **计算n**:将两个素数相乘得到n=p*q,n是模数,是RSA算法的关键参数。 3. **计算φ(n)**:...

    计算两个矩形的乘积

    1. 检查左右边界:计算两个矩形的x坐标交集,即两个矩形左边界中较大的那个和右边界中较小的那个,得到交集矩形的左右边界。 2. 检查上下边界:同样,计算两个矩形的y坐标交集,得到交集矩形的上下边界。 3. 计算...

    java练习_大数运算_BigInteger.pdf

    4. `multiply()` 方法:该方法用于将两个 BigInteger 对象相乘。 例如:`BigInt1 = BigInt1.multiply(BigInt2);` 5. `divide()` 方法:该方法用于将一个 BigInteger 对象除以另一个 BigInteger 对象。 例如:`...

    java的hill算法

    加密过程包括两个步骤:明文矩阵化和矩阵乘法。首先,将明文按照预定长度(与矩阵阶数相同)分组形成矩阵,然后用加密矩阵与明文矩阵相乘,得到密文矩阵。解密过程则是加密过程的逆操作,即用加密矩阵的逆矩阵与密文...

    超额发票单据按照限额拆分java

    - `CalculatedUtil.multiplicationString(factor1, factor2)`:用于计算两个字符串表示的数字相乘的方法。 - `CalculatedUtil.additionstring(num1, num2)`:用于计算两个字符串表示的数字相加的方法。 4. **状态...

    Java练习题,实用于Java大部分人群

    - 打印每一对数字相乘的结果。 #### 17. 碰碰球游戏 - **知识点**:模拟多个球在有限空间内的运动轨迹。 - **实现方法**: - 定义球的位置和速度。 - 使用循环来模拟球的移动过程,并检测碰撞情况。 - 根据碰撞...

    2021-11-22 C语言学习应用——用C语言实现大数相乘(csdn)————程序.pdf

    乘法运算的核心部分是两个嵌套的`for`循环,外层循环遍历`s1`的每一位,内层循环遍历`s2`的每一位,将它们对应位置的数字相乘,并累加到结果数组`c`的对应位置。之后,处理进位,确保没有多余的进位遗留。 最后,...

Global site tag (gtag.js) - Google Analytics