俩个大数相乘(java实现)

Java 大数相乘 将大数相乘分成三步 1:定义 单个数 与 大数相乘 2:定义 两个大数相加 3:将单个数与大数相乘结果 用 定义好的 大数相加函数 加起来 import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args){ String num1 = "17543231453" 阅读详情
package com.example;

/**
 *
 * @author ZHANGHAOHAO089
 * @date 2017/6/27
 */

public class BigNumber {

    public static void main(String args[]) {
        String str1 = "121255";
        String str2 = "23545";
        char[] data1 = str1.toCharArray();
        char[] data2 = str2.toCharArray();
        convert(data1);
        convert(data2);
        multiply(data1, data2);
    }

    //高低位对调
    public static void convert(char data[]) {
        int len = data.length;
        for (int i = 0; i < len / 2; i++) {
            char num = data[len - i - 1];
            data[len - i - 1] = data[i];
            data[i] = num;
        }
    }

    public static void multiply(char[] x, char[] y) {
        int lenX = x.length;
        int lenY = y.length;
        int[] sum = new int[lenX + lenY + 3];//最多是这个位数
        //对sum赋值
        for (int i = 0; i < sum.length; i++) {
            sum[i] = 0;
        }
        for (int i = 0; i < lenX; i++) {
            for (int j = 0; j < lenY; j++) {
                sum[i + j] += Integer.parseInt(String.valueOf(x[i])) * Integer.parseInt(String.valueOf(y[j]));
            }
        }
        //高低位进阶
        for (int m = 0; m < sum.length; m++) {
            int number = sum[m] / 10;
            if (number > 0) {
                sum[m] = sum[m] % 10;
                sum[m + 1] += number;
            }
        }

        //打印
        int index = 0;
        for (int n = sum.length - 1; n > 0; n--) {
            if (sum[n] > 0) {
                index = n;
                break;
            }
        }

        for (int m = index; m >= 0; m--) {
            System.out.print(sum[m]);
        }
    }
}

核心就是转化为数组来实现相乘,而且sum[i+j]的数是关键

C++ 实现大数相乘 如果这两个数比较小(即能用计算机的int、long类型表示,并且相乘后的结果任然能够表示)那么直接用计算机 的乘法运算就可以了。这里的大数指的是用计算机的预设类型(int、long等)无法表示的数,如:11111111111 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111 阅读详情

相关推荐

JAVA大数据运算系列之大整数相乘

最近在准备面试,遇到很多大数据运算相关的面试题,这里做个记录。                     一、两个非负整数相乘 解题思路借鉴于:qwurey-Java实现大整数相乘 import java.util.Scanner; public class BigNumMultiply { static int N = 1000; static int a[] = new i

ld的专栏 2246

Java实现乘法的方法——(三种)

最近在看一篇java的笔试题,里面要求用效率最高的方法求2*8,然后第一反应就是直接使用Java自带的乘法,然后发现其实还可以使用位运算符 “<<” 进行计算(如移了N位则乘了2的N次方)。所以我从中总结了三种方法来实现乘法的计算。希望对大家有帮助 方法1(直接相乘): 该方法最直接: // An highlighted block int d = 2 * 8; System.out.println(d); //d = 16 方法2(for循环相加): 此方法利用了乘法的原理,即使用多

web15085599741的博客 3631

避坑指南:在Ubuntu 22.04上配置UR5e与ROS2 Humble真机通信的完整流程

本文详细介绍了在Ubuntu 22.04上配置UR5e机械臂与ROS2 Humble真机通信的完整流程,包括环境准备、网络配置、URCap安装、ROS2驱动部署及控制器状态验证等关键步骤。特别针对常见问题如网络连接失败、驱动启动错误等提供了实用解决方案,帮助工程师高效完成UR5e与ROS2的集成工作。

weixin_30790841的博客 463

Java实现大数相乘

大数相乘算法,可以避免因得数过大超过数据范围而显示错误的问题。 我所使用的大数相乘算法为逐位相乘处理进位法,主要运用了数组倒序和数组数组移动的方法。 大致原理为:如12345×678,先将12345和678倒序,然后相乘,每一位的结果为相乘后的结果加上上一位的进位: 得到结果后,将三个得数数组进行移动然后相加,这一步可以同步执行: 最后的结果逆序输出,即为答案。 代码实现: import java.util.Scanner; public class Multiplication { public

Bare_Man的博客 3173

搭建微信机器人的方案都在这了!

功能超级强大,虽不支持二次开发,但已有的功能足够个人使用,可惜官方作品已被腾讯告死,好在市面上还流落着不少破解版,有需要的自行搜索。可惜的是,微信官方已不准许新的微信号再使用 web 登录,这就直接从源头扼杀了 web 协议的微信机器人,虽说老的微信号还是能凑合着用,不过部分功能也受限。所以,这些都属于 PC 端的微信机器人。无论是 PC 端还是手机端,用 hook 方式实现的最大缺点就是要和某一个版本的微信客户端进行绑定,如果框架本身不对最新版本的微信适配,那使用的时候就无法升级到最新版本的微信。

weixin_47246330的博客 1万+

抖音小游戏上架避坑指南:从软著申请到ICP备案全流程解析

本文详细解析了抖音小游戏上架前必须完成的软著申请和ICP备案全流程,提供了清晰的时间线规划与实操避坑指南。文章重点阐述了个人与企业备案的区别、材料准备要点以及平台审核常见问题,旨在帮助独立开发者和小团队高效、合规地完成游戏上架,避免在行政流程中延误项目。

weixin_29276847的博客 1551

java实现乘法的方法

首先,我们可以在一个函数中定义一个名为 double*的变量,然后函数返回时,我们就可以直接对这个变量进行赋值操作,这样我们就可以直接对这个变量进行乘法运算了。这里需要注意的是, final修饰的变量是不能修改的,所以如果你想修改这个变量,那么一定要在函数外面先定义一个新的变量。当我们在定义一个方法的时候,我们可以通过 public static修饰方法来进行操作,比如我们可以这样定义一个方法: public static修饰方法的意思是:这个方法只能被当前类的实例访问,而且不能被重载。

花生日记 6033

别再为调试发愁!STM32CubeMX+FreeRTOS下,串口printf打印的保姆级配置指南(基于STM32F429)

本文详细介绍了在STM32CubeMX和FreeRTOS环境下实现稳定串口printf打印的配置方法。通过硬件选型、基础配置、线程安全的重定向实现以及高级调试技巧,帮助开发者解决多任务环境下的串口输出问题,提升调试效率。特别适用于STM32F429开发板用户。

weixin_42527401的博客 272

java实现大数相乘的2种方式

按位运算–时间效率O(n^2) import java.util.LinkedList; import java.util.List; public class first { public static List<Integer> bigNumberMultiply2(int[] num1, int[] num2){ // 分配一个空间,用来存储运算的结果,num1长的数 * num2长的数,结果不会超过num1+num2长 LinkedList&lt

weixin_44001521的博客 1869

Windows BITS服务:后台智能文件传输技术详解

后台文件传输技术是现代IT基础设施中的关键组件,Windows BITS(Background Intelligent Transfer Service)作为微软原生解决方案,通过队列管理和智能调度实现高效数据传输。其核心技术原理包括分块传输、断点续传和带宽自适应,能够根据网络状况动态调整传输速率(默认占用空闲带宽的80%)。在工程实践中,BITS特别适用于企业软件分发和自动化数据采集场景,通过PowerShell命令即可实现高优先级传输和代理配置。相比传统FTP方案,BITS在跨国文件传输中将失败率从30

weixin_42116058的博客 274

LSTM模型股价波动率预测(含Python代码)

源代码文件可在gzh’finance褪黑素'回复【24012203】获取。

celiaweiwei的博客 3774

Java实现俩个大数相乘

不用BigInteger实现两个大数字相乘 思路 位数 1 2 3 数字 3 4 5 6 7 8 如表所示 两个数345和678 两个数位数相加为6的数积为40 两个数位数相加为5的数为32+35 两个数位数相加为4的数为24+30+28 两个数位数相加为3的数为21+24 两个数位数相加为2的数为18 然后逐次进行进位得到最终的数 代码实现 public static void main(String[] args) { System.out.print

sql计算日期到当前日期的年份 566

从频谱分析到硬件加速:用ZYNQ-7020+FFT IP核实现实时信号处理的完整方案

本文详细介绍了如何利用ZYNQ-7020和FFT IP核实现实时信号处理的完整方案,涵盖系统架构设计、硬件加速实现及性能优化。通过异构计算架构,该方案将1024点FFT处理延迟压缩至28μs,显著提升工业自动化和无线通信等领域的实时频谱分析效率。

weixin_33704234的博客 467

两个大数相乘JAVA版

翻出了之前在庞果网编程英雄会上用JAVA实现的一个两个大数相乘的程序,和大家分享一下: public class MyMultiply { /** * @param args */ public static void main(String[] args) { // System.out.println("Hello world"); //String str1 = "

wangqiuyun的专栏 1万+

【C#学习记录】如何让界面控件实现自适应布局(Winform)

小伙伴们大家好,我是雷工!在软件界面设计中,客户常常要求设计的界面可以随意缩放,缩放过程中,界面中的按钮等控件也会随着窗体变大缩小自动调整显示位置和尺寸大小。在C#的Winform窗体中如何实现这个效果,下面我们一起学习下。

做有价值的事,积累有价值的笔记! 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

大数相乘、大数相加、大数相减Java版本

题目:两个非常大的数字相乘(相加,相减)        该题目在java中可以使用BigInteger类中的方法来实现。否则的话可以使用如下方式来实现。        大数相乘:假设有A和B两个大数,位数分别为a和b。根据我们平常手动计算乘法的方式可以看出,最终的结果的位数c

lichong_87的备忘录 2万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

算法之大数相乘

1. 大数相乘问题 计算:999999999999999999999999999999 x 999999999999999999999999999999 = ?(30个9乘以30个9) 在JAVA语言中表示数字的类型有byte、short、int、long,这些类型都有其表示的数据范围,超过了能表示的范围就会产生数据溢出,比如: // 输出int能表示的最大数加1后的数 System.out.println(Integer.MAX_VALUE + 1); int能表示的最大数是2147483647,但

天天向上 3341

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java处理两个大数相乘

package com.ps.test; import java.util.Scanner;      public class bigNumMultiply {         /**       * 实现两个大数相乘       * @param args       */      public static final int MAX_LEN = 100

2847

Java大数相乘(使用BigInteger和BigDecimal以及使用数组实现大数相加)

文章目录1.BigInteger和BigDecimal2.大数相乘的题 1.BigInteger和BigDecimal 在 Java 中提供了用于大数字运算的类,即 java.math.BigInteger 类和 java.math.BigDecimal 类。这两个类用于高精度计算,其中 BigInteger 类是针对整型大数字的处理类,而 BigDecimal 类是针对大小数的处理类。 在运算中 BigInteger 类型可以准确地表示任何大小的整数值,它可以表示的范围比integer大得多了。 Big

押切徹的博客 2385

【LeetCode43:字符串相乘(大数相乘)(Java实现)】

字符串相乘或大数相乘问题

NorthSmile的博客 1611

JAVA中大数相乘的实现

大数的运算,其思想是将其看成字符串,因为int、double、long等数据类型都有大小限制 package compare; import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; /** * 大数相乘,其主要思想是将其看成字符串处理 * @author HANS */ pub...

Fat Panda的博客 434

大数相乘 java_大数相乘——java版

之前面试的时候被问到两个很大很大的数相乘在java中怎么把它算出来,显然不能直接相乘,当时我只回答出来了用BigInteger,然而不是最好的答案。大数相乘的核心思想是将数字转化为字符串,然后逐位相乘转化最后才得出结果。先上一段代码:public static void main(String[] args) {String str1 = "23451515412151511212";String...

weixin_29822105的博客 786

JAVA两个大数相乘

大数处理是科研过程中常见的问题,尤其在天文学,气象学等。在面试中,大数处理,尤其是两个大数相乘更是常客。在Java语言中,长整型long占8个字节,能表示的最大值为2^64 = 9223372036854775807(Long.MAX_VALUE),而这只有19位,分配到每个数至多8位(两个数位数一样),远远不能满足要求。所以,大数相乘要换个思路,从乘法的原理入手,下面说说我的思路。 1,预处理

TWgFWHuD的博客 3333

java 大数相乘(数组方法实现)

栗子:987654321 乘以 11 public class Main { public static void main(String[] args) { int[] sum = new int[50]; sum[sum.length-1] = 1; // 默认最后一个为 1 int n = 100; // 100...

memory_cood的博客 1053
上一篇: Android中BaseAdapter的viewHolder工具类
下一篇: Android中的内部存储和外部存储
豪豪6
博客等级 码龄14年 6粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值