两个大数字乘法_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 两个大数字乘法

两个大数字乘法

 2019/11/26 0:50:46  greemranqq  程序员俱乐部  我要评论(0)
  • 摘要:/***默认最大长度50位,可以调节,或者动态判断都行*/staticString[]all=newString[50];publicstaticvoidmain(String[]args){System.out.println(multiply(Long.MAX_VALUE,Long.MAX_VALUE));System.out.println(multiply1(Long.MAX_VALUE,Long.MAX_VALUE));}privatestaticStringmultiply1
  • 标签:
class="java"> /**
     * 默认最大长度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();
    }

?

上一篇: .Net Core加持,LR代码生成器功能简析 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名