`
mmdev
  • 浏览: 13219465 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

两个大整数的乘法

 
阅读更多

和上面一篇的思想是一样的,就是用数组来进行保存数据,这里比上面的复杂一点,因为他要记录每一次乘后的结果,在后一次乘的过程中还要加上原来的那个数。

程序源码:

package dashuchengfa;


import java.util.Scanner;


public class Test {


public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.next();
String str2 = sc.next();
int max = 100,i,j;
int num[] = new int[max];
int t = 0,tem=0;
for( i=str1.length();i>0;i--)
{
int a = Integer.parseInt(str1.substring(i-1, i));
int c = 0;
t = tem;
for( j=str2.length();j>=0;j--) //设置为j>=0的目的是为了多循环一次让最后计算的进位能够计算上。
{
int b =0;
// 由于上面多循环一次,所以这里有下面的这句if就是为了让下面的那句在最后一次的时候不执行,避免错误。
if(j!=0)
b = Integer.parseInt(str2.substring(j-1, j));
int s =num[t]+ a*b+c;
num[t++] = s % 10;
c = s / 10;
}
tem++;
}
for( j = max-1;j>=0;j--)
{
if(num[j]!=0)
break;
}
for( i = j;i>=0;i--)
System.out.print(num[i]);
}
}

运行示例:

12345 56565656432331121216356456
698303028657127691415920449320

分享到:
评论

相关推荐

    大整数乘法的C语言实现

    3. **乘法算法**:实现大整数乘法的函数,遍历两个大整数的数组,执行逐位乘法和累加操作。 4. **进位处理**:处理乘积的进位,确保正确的结果。 5. **内存管理**:正确地分配和释放内存,避免内存泄漏。 在`main....

    大整数乘法算法选择和分析

    然而,这种方法的时间复杂度较高,为\( O(mn) \),其中\( m \)和\( n \)分别为两个大整数的位数。 - **Karatsuba算法**:这是一种基于分治思想的算法,通过减少乘法次数来提高效率。时间复杂度为\( O(n^{\log_23}) ...

    分治法求两个大整数相乘

    ### 分治法求两个大整数相乘 #### 一、问题背景及描述 在计算机科学领域,处理大整数的运算是一项常见的需求,尤其是在密码学、数据加密以及某些科学计算场景中。对于传统整数类型(如 `int`, `long` 等)无法表示...

    大整数乘法(分治法)

    在大整数乘法中,可以将每个 n 位大整数分解成两个 n/2 位的子整数,分别计算它们的乘积,然后组合结果以得到最终的乘积。 在这个实验报告中,我们使用了分治法来设计大整数乘法算法。首先,将每个 n 位大整数 X 和...

    大整数乘法---快速傅立叶变换(FFT)

    快速傅立叶变换(FFT)是一种高效的计算离散傅立叶变换(DFT)的算法,对于处理大整数乘法具有重要的应用价值。在计算机科学尤其是数学和信号处理领域,FFT是解决复杂数学问题的关键工具。本文将深入探讨FFT在大整数...

    二进制的大整数乘法

    - 输入为两个二进制表示的大整数`u`和`v`。 - 将每个整数拆分为高位部分`x`和低位部分`w`,以及高位部分`y`和低位部分`z`。 - 计算四个子问题的乘积:`a = w * y`,`b = w * z`,`c = x * y`,`d = x * z`。 - ...

    汇编长整数乘法

    长整数乘法就是为了解决这个问题,它涉及将两个大整数分解成若干部分,然后使用传统乘法算法(如Karatsuba或Toom-Cook算法)进行逐段计算,并将结果合并。 1. **基本概念**: - **长整数**:超出处理器原生整数...

    C语言实现大整数乘法

    7. **接口设计**:为了让其他程序能够方便地使用大整数乘法功能,提供易于使用的API,如`BigInt* multiply(BigInt* a, BigInt* b)`,返回两个大整数的乘积。 在提供的`cjw.EXE`文件中,很可能包含了上述概念的实现...

    大整数乘法分治算法实现

    在大整数乘法中,分治法通过将两个大整数拆分为较小的部分,然后递归地计算这些部分的乘积,最终组合出整个乘积。 Karatsuba算法由Alexander Karatsuba于1960年提出,其基本思想是:假设我们有两个n位的大整数A和B...

    大整数乘法实验报告/vc

    在大整数乘法中,分治策略通过将两个大整数拆分为多个小段,分别进行乘法运算,然后合并结果,以此提高运算效率。 实验步骤中给出了一个C++程序,该程序首先定义了存储大整数的字符数组`a`, `b`, 和 `c`,以及变量`...

    大整数乘法的实现

    ### 大整数乘法的实现 #### 实验背景及目的 随着计算机技术的发展,大整数乘法在密码学、大数据处理等领域有着广泛的应用。然而,在计算机内部,硬件能够直接处理的整数通常受限于一定的位数范围,超出这个范围的...

    大整数乘法实现

    ### 大整数乘法实现解析 在计算机科学中,处理大整数的乘法是一项基本但复杂的任务,尤其当涉及到超出标准数据类型(如`int`或`long`)所能表示的数值范围时。本篇文章将深入探讨一种基于字符串处理的大整数乘法...

    大整数乘法问题_LargeIntegerMulti_algorithm

    大整数乘法是指两个超过常规整型范围的数值相乘,通常涉及到数十位甚至数百位的数字。传统的学校教育中,我们学习的竖式乘法方法在计算机中并不适用,因为其效率较低,不适合处理大数据量的计算。为了解决这个问题,...

    大整数乘法实现(未用分治与递归

    该函数将两个整数数组相乘,并将结果存储在第三个数组中。该函数的实现代码如下所示: ```cpp vector<int> num_n(vector<int> data1,vector<int> data2,vector<int> data3){ for(int i=0;i();i++) for(int k=0;k()...

    大整数乘法的数据结构及算法

    ### 大整数乘法的数据结构及算法 大整数乘法在密码学、生物信息学、基因工程等众多领域中扮演着至关重要的角色。在这些领域中,我们需要处理的整数往往远远超出传统整数类型所能表示的范围,因此,如何设计高效且...

    大整数乘法C语言版本

    当两个或多个大整数需要相乘时,常规的整数乘法运算符(如 *)不再适用,因为它们只能处理固定大小的整数。在C语言中,这种问题通常通过自定义算法来解决,比如“分治思想”的Karatsuba算法或Toom-Cook算法。本项目...

    分治法求大整数乘法(可运行)

    “大整数乘法”是指两个超出常规整型范围的大数之间的乘法操作,例如两个1000位的数相乘。由于常规的算术运算符不能处理这种规模的数字,所以需要专门的算法。在计算机科学中,Karatsuba算法和Toom–Cook算法是一些...

Global site tag (gtag.js) - Google Analytics