`
junfeng279
  • 浏览: 3527 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java大数据相乘

    博客分类:
  • java
阅读更多
package com.test;
public class MyMultiply {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// System.out.println("Hello world");

		//String str1 = "1234";
		//String str2 = "1234";
		//String str1 = "1076060999";
		//String str2 = "90188905567";
		String str1 = "2345678900987766655554444446454564646878768768687867867684684";
		String str2 = "3465874365984375943759438759438753515113546468478674687486748674867468465143513545454613213548787687";

		int len1 = str1.length();
		int len2 = str2.length();

		char[] s1 = str1.toCharArray();
		char[] s2 = str2.toCharArray();

		// 高低位对调
		covertdata(s1, len1);
		covertdata(s2, len2);

		System.out.println("乘数:"+str1);
		System.out.println("乘数:"+str2);
		multiply(s1, len1, s2, len2);

	}

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

	public static void multiply(char a[], int alen, char b[], int blen) {
		// 两数乘积位数不会超过乘数位数和+ 3位
		int csize = alen + blen + 3;
		// 开辟乘积数组
		int[] c = new int[csize];
		// 乘积数组填充0
		for (int ii = 0; ii < csize; ii++) {
			c[ii] = 0;
		}
		// 对齐逐位相乘
		for (int j = 0; j < blen; j++) {
			for (int i = 0; i < alen; i++) {
				c[i + j] +=  Integer.parseInt(String.valueOf(a[i]))* Integer.parseInt(String.valueOf(b[j]));
			}
		}
		int m = 0;
		// 进位处理
		for (m = 0; m < csize; m++) {
			int carry = c[m] / 10;
			c[m] = c[m] % 10;
			if (carry > 0)
				c[m + 1] += carry;
		}
		// 找到最高位
		for (m = csize - 1; m >= 0;) {
			if (c[m] > 0)
				break;
			m--;
		}
		// 由最高位开始打印乘积
		System.out.print("乘积:");
		for (int n = 0; n <= m; n++) {
			System.out.print(c[m - n]);
		}
		System.out.println("");
	}
}

 

分享到:
评论

相关推荐

    java实现大数据相乘

    请输入你想要的数据长度 2000 第一个数据长度:…………………… 第二个数据长度:…………………… 数据总长度:…………………………

    java字符串数组实现大数据运算

    在Java编程中,字符串数组和大数据运算经常被用于复杂的数据处理和计算场景。在这个特定的示例中,我们要实现一个程序来计算表达式 (1+2)(1+2^2)*(1+2^3)*...*(1+2^100) 的结果。这个表达式涉及到指数运算和乘法,这...

    大数据实验报告Hadoop编程实现MatrixMultiplication矩阵相乘程序附源码.doc

    本实验报告的主要目的是使用 Hadoop 编程实现矩阵相乘(Matrix Multiplication)程序,并将其应用于大数据平台上。实验中,我们使用 Hadoop 的 MapReduce 框架来实现矩阵相乘,并将结果保存到 HDFS 中。 知识点一:...

    阿里大数据笔试

    阿里大数据笔试主要涉及编程语言如Java、Scala和Python的应用,以及算法思维和大数据处理技术。以下是对这些知识点的详细解释: 1. **身份证号码有效性检验**: 身份证号码的有效性检查通常涉及到一系列规则,包括...

    秋招 技术岗面试 (大数据岗,Java岗)分享

    总之,成功通过技术岗位面试,特别是大数据岗和Java岗,需要对基础技术、算法、项目经验和面试技巧有全面的准备。通过系统学习,有针对性的复习,结合实际案例,以及持续的刷题训练,能够显著提升你的竞争力。同时,...

    大整数相乘算法 分治法

    大整数相乘算法是计算机科学中用于处理超出标准数据类型范围的大整数乘法问题的一种方法。在大多数编程语言中,如C++,整数类型(如`unsigned long`...这种算法在处理大数据、加密算法、数学计算等领域有着广泛的应用。

    JAVA编写的基于文本相似度匹配的文本聚类

    通过将这两个值相乘,我们可以得到每个词的TF-IDF得分,从而可以对文本进行量化表示。 为了进行聚类,我们选择了K-NN算法。K-NN是一种非参数的监督学习算法,但在无监督学习中也可以用于聚类。在文本聚类中,我们先...

    java递归实现 阶乘

    因此,在实际应用中,我们应谨慎使用递归,尤其是在处理大数据或深度递归的情况下,可以考虑使用迭代等其他算法。 此外,对于学习递归的新手来说,理解递归的工作原理和调试递归程序是非常重要的。理解递归过程可以...

    一种大数据推荐系统.pdf

    推荐指数的计算方法是将物品同现矩阵(商品一起被购买的次数)与评分矩阵相乘,得到最终的推荐结果。 系统实现部分提到了系统由六个Java文件组成,每个文件有其特定的功能。系统通过处理输入数据,并使用协同过滤...

    大数相乘指数幂的实现

    总之,大数相乘和指数幂运算在处理大数据时具有重要意义。通过理解并应用各种高效的算法,如Karatsuba、Toom-Cook、快速幂和Montgomery乘法,我们可以显著提升计算速度,满足复杂计算任务的需求。同时,熟悉编程语言...

    通过Java实现基于RSA算法的非对称分段式双向加解密的数据接口安全认证源码

    它基于两个大素数相乘的难度来构建,生成一对密钥:一个公钥和一个私钥。公钥可以公开给任何人,而私钥必须保密,仅由数据的所有者持有。 在Java中实现RSA算法,我们需要使用`java.security`包下的类,如`...

    基于JAVA的RSA文件加密软件的设计与实现(源代码+论文).zip

    4. **处理大数据文件**:RSA不适用于加密大数据文件,因为它的最大加密数据长度受制于模数n的大小。通常的做法是使用RSA加密一个随机生成的对称密钥,然后用这个对称密钥去加密大量数据。这种方式称为“RSA密钥交换...

    JAVA实现BP算法.pdf

    1. **前向传播**:输入数据通过神经网络的每一层进行计算,每一层的神经元都会将输入与权重相乘并加上偏置,然后通过激活函数转化为非线性输出。这一过程从输入层到输出层逐层进行。 2. **反向传播**:计算损失函数...

    java练习_大数运算_BigInteger.pdf

    这个类属于 `java.math` 包,专门用于进行任意精度的整数运算,不受 Java 原生数据类型限制。在这个练习中,我们将深入探讨 `BigInteger` 类的一些核心方法,并通过一个具体的示例来展示如何使用它们。 首先,我们...

    基于java实现的快速幂、快速乘算法,利用二进制位运算将O(n)的算法复杂度降到O(logn)

    而快速幂算法通过分治策略将问题规模减半,每次将幂拆分为两个相乘的部分,如 `a^n = a^(n/2) * a^(n/2)`,如果n是奇数,则还需额外乘以一次 `a`。如此递归下去,最多只需要O(logn)次乘法操作,大大提高了效率。 在...

    长整数相乘的算法实现

    例如,Python 的内置 `int` 类型就实现了高效的长整数乘法,而 Java 提供了 `BigInteger` 类来处理大整数。 在分析和实现这些算法时,我们还需要考虑以下几点: - **溢出管理**:确保在处理大整数时不会发生溢出,...

    RSA 加密程序

    在处理大数据时,由于RSA的效率较低,通常会先使用RSA加密一个对称加密密钥,然后用这个密钥加密大量数据,这样既保证了安全性,又提高了效率。例如,在HTTPS协议中,RSA就用于在客户端和服务器之间安全地交换会话...

    java纯手写CCF试题一二题的代码与分析.pdf

    这篇PDF文档包含了一道关于“稀疏向量”的Java代码题目及其分析。稀疏向量是处理大数据时的一种优化方法,它用于存储大量零元素的数组,以减少存储空间。 题目描述: 这道题目要求实现一个程序,计算两个稀疏向量的...

    Big-Data-Experiments:Hadoop和Map Reduce中的大数据分配和项目

    5.找到两个巨大的稀疏矩阵相乘的结果矩阵 数据中的每一行都具有以下形式: A,0、172、5 在此,A是该行所属的矩阵。 0是行号。 172是列数 5是A [0] [172]处的值 采用工作链方法。 第一项工作是乘法,第二项工作...

    【题解】Bupt 13级新手专题训练②高精度和几个小数学题1

    同样使用 `BigInteger` 类,我们读取两个输入值并使用 `multiply()` 方法相乘。结果直接输出。 ```java BigInteger a; BigInteger b; while (in.hasNext()) { a = in.nextBigInteger(); b = in.nextBigInteger();...

Global site tag (gtag.js) - Google Analytics