`
greemranqq
  • 浏览: 966125 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

两个大数字乘法

阅读更多
 /**
     * 默认最大长度50位,可以调节,或者动态判断都行
     */
    static String[] all = new String[50];

    public static void main(String[] args) {
        System.out.println(multiply(Long.MAX_VALUE, Long.MAX_VALUE));
        System.out.println(multiply1(Long.MAX_VALUE, Long.MAX_VALUE));

    }


    private static String multiply1(Long a, Long b) {
        char[] as = a.toString().toCharArray();
        char[] bs = b.toString().toCharArray();
        for (int p1=0,i = as.length-1; i > -1; i--,p1++) {
            for (int p2=p1,j = bs.length-1; j > -1; j--,p2++) {
                Integer num = Integer.parseInt(bs[j]+"") * Integer.parseInt(as[i]+"");
                int pos = p2;
                addNum(num % 10, pos);
                if (num > 10) {
                    addNum(num / 10, pos+1);
                }
            }
        }
        for(int x = all.length -1  ;x > -1;x--){
            if(all[x] != null){
                System.out.print(all[x]);
            }
        }
        return "";
    }

    private static void addNum(int num, int i) {
        if (all[i] == null) {
            all[i] = "0";
        }
        Integer s1 = Integer.parseInt(all[i]);
        s1 = s1 + num;
        if (s1 >= 10) {
            all[i] = String.valueOf(s1 - 10);
            addNum(s1 / 10, i + 1);
        } else {
            all[i] = String.valueOf(s1);
        }

    }

    /**
     * JDK 提供,可以看看优化
     * @param x
     * @param y
     * @return
     */
    private static String multiply(long x, long y) {
        BigDecimal a = new BigDecimal(x);
        BigDecimal b = new BigDecimal(y);
        return a.multiply(b).toString();
    }

 

分享到:
评论

相关推荐

    用bigint类编写大数字乘法

    用C++编写bigint类型,实现超过float容量的大数字乘法

    大数乘法运算,用于实现两个大整数之间的运算,效率非常高!

    采用char数组存储数字,所以然后从代表两个数的数组中各取一个数进行乘法……具体实现看包中的代码,注释很详细!运行几乎不花什么时间。

    动态数组实现大数乘法

    两个大数相乘:利用数组实现,数组a存放大数1的每一位,数组b依次存放大数2的每一位。如:一大数1为3463546,则数组 a[]={3,4,6,3,5,4,6},大数2为:89019 则数组b[]={8,9,0,1,9},现在要大数1和大数2相乘,并按数位...

    采用分治法计算两个大整数的乘积

    实现算法: 给定两个整数u和v,它们分别有m和n位数字,且m≤n。用通常的乘法求uv的值需要O(mn)时间。我们可以将u和v均看作是有n位数字的大整数。用分治法在O(nlog3)时间内计算uv的值。当m时,此法效率不高。...

    超大数乘法

    对超大数做乘法计算 输入两个数即可计算相乘结果 可支持千万位 甚至更大 数数字相乘

    分治法,大整数乘法

    分治法,大整数乘法,一些相关介绍,相关应用大整数乘法

    基于FFT的任意进制长整数乘法

    北京邮电大学漆涛老师自主发明了位运算版的快速傅里叶变换,相比较传统的蝶形运算,显得更加通俗易懂且更有效率。...输入的两个数中,每个数字的每一位中间请加一个空格!!编的不好,大家不要报以太大希望。

    乘法数字的编程

    很好的资源 编程实现两个很大的数的乘法运算 例如:157……362 × 232……179 = ?

    论文研究-基于标准单元库扩展的快速乘法器设计.pdf

    将TSMC 90 nm标准单元库扩展得到扩展单元库, 使用两个单元库版图分别实现数字乘法器, 基于扩展单元库实现的乘法器速度提升10. 87%。实验结果表明, 基于标准单元库扩展的半定制设计方法可以有效提升电路的性能, 这种...

    VB进行大整数乘法运算实例.rar

    VB进行大整数乘法运算实例,实现两个超大整数的相乘功能,是数学计算器中的一个功能部分,请注意乘数和被乘数都必须由数字组成。可以显示计算过程,可随机生成两个大整数以便测试,计算结果将显示在下边的文本框中。

    乘法器设计

    乘法算是基本运算之一,广泛应用在...1,以为相加乘法器其,对两个二进制数进行相乘运算,运用列式求法我们可以得知,乘法最终就是由加法和移位运算构成的,由此可以用高速度的加法和移位实现乘法操作,具体代码如下:

    Verilog HDL语言,IEEE标准,64位大位宽全精度有符号浮点乘法器乘法运算

    两个不同长度的操作数进行位运算时,将自动按右端对齐,位数少的操作数会在高位用0补齐。 关系运算符优先级低于算术运算符,返回结果为逻辑值,0或1或x 等于运算符(= =)和全等运算符(===)的区别: 使用等于运算符时,...

    JS实现两个大数(整数)相乘

    那么如何实现两个大数相乘呢?我用JS实现了一下,代码如下: 代码如下: console.log(bigMut(“567”, “1234”)); // 699678 function bigMut(big, common) { big += “”; common += “”; if (big.length < ...

    C语言程序设计代码复习题大全.zip

    1.4 有两个班级,分别有35名和30名学生,调用函数,分别求这两个班的平均值 1.5 用选择法对数组中的10个整数按由小到大排序 1.6 有一个3*4的矩阵,求所以=有元素中的最大值 1.7 有一个数,内放10个数,不用全局变量...

    JavaFundamentals:Java平台基础

    task3 编写一个计算器 - 一个程序,接收两个整数作为输入(数字 A 和数字 B),执行算术运算(“+” - 加法,“-” - 减法,“*” - 乘法,“/” - 除法)并将结果打印到控制台。 为每个操作使用单独的方法(您不能...

    随机5位数丨取最大乘法丨速度最快5秒-易语言

    先取最大和最小这两个数字。比如12346 取最大数和最小数 为1 和6 2.去掉1 和6 剩下234 三位数 我们再取出第二位数字 那么为4 3.去掉4 剩下2 和3 ,我们只有判断最大的那个数字就是第三位数了为3 ,剩下的那个就是...

    大整数阶乘 C++

    众所周知,阶乘运算的增长速度特别快(比2^n的增长速度快),对于较小整数的阶乘运算采用简单的递规算法可以实现,但是对于大整数的乘法(比如1000!),则传统的递规算法就失去了作用。该程序的思路是:1.开辟一个...

    javascript文档

    + 运算符 将两个数字表达式的值相加,或连接两个字符串。 ++ 运算符 变量值加 1。 += 运算符 将表达式的值加到变量中。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式中减去另一个表达式的值,或对...

    JScript 语言参考

    + 运算符 将两个数字表达式的值相加,或连接两个字符串。 ++ 运算符 变量值加 1。 += 运算符 将表达式的值加到变量中。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式中减去另一个表达式的值,或对...

    微软JavaScript手册

    + 运算符 将两个数字表达式的值相加,或连接两个字符串。 ++ 运算符 变量值加 1。 += 运算符 将表达式的值加到变量中。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式中减去另一个表达式的值,或对...

Global site tag (gtag.js) - Google Analytics