两个大的整数的运算(java)

 1 import java.math.BigInteger;
 2
 3 public class BigInt {
 4     BigInteger m1;
 5     BigInteger m2;
 6     BigInteger m3;
 7
 8     BigInt(String s1, String s2) {
 9         m1 = new BigInteger(s1);
10         m2 = new BigInteger(s2);
11     }
12
13     public void add() {
14         m3 = m1.add(m2);
15         System.out.println("两个数的和为:" + m3);
16     }
17
18     public void cut() {
19         m3 = m1.subtract(m2);
20         System.out.println("两个数的差为:" + m3);
21     }
22
23     public void multiply() {
24         m3 = m1.multiply(m2);
25         System.out.println("两个数的积为:" + m3);
26     }
27
28     public void divide() {
29         m3 = m1.divide(m2);
30         System.out.println("两个数的商为:" + m3);
31     }
32
33     public void factorCount() {
34         int count = 0;
35         for (BigInteger i = BigInteger.valueOf(2); i.compareTo(m1) < 0; i = i
36                 .add(BigInteger.ONE)) {
37             if (m1.remainder(i).equals(BigInteger.ZERO)) {
38                 ++count;
39             }
40         }
41         System.out.println(m1 + "的因子个数为:" + count);
42     }
43
44
45     public static void main(String[] args)
46     {
47         String num1="123456789123456789123456789";
48         String num2="987654321987654321987654321";
49         BigInt bigInt=new BigInt(num1,num2);
50
51         bigInt.add();
52         bigInt.cut();
53         bigInt.multiply();
54         bigInt.divide();
55         bigInt.factorCount();
56     }
57 }    

时间: 2024-10-25 20:18:14

两个大的整数的运算(java)的相关文章

关于大整数的加减乘除求余运算 java

自己用java 实现了大字符串整数的加减乘除和求余运算, 加减法的算法是模拟手工笔算的计算过程, 除法就是从最高位不停的减操作, 乘法的算法 :遍历一个数的各个位数以及他所在位置,另一个数根据这个数的位置末位添n个0,然后累加次数为这个位置数的数值 原创代码如下: public class Demo6 { public static void main(String[]args){ System.out.println(add("-989","989")); Sys

求两个大整数相乘的积,数字长度在127个字符之内。

计算两个大整数相乘的结果,数字不是double类型能表示的,数字长度没有限制(最大127位). 方法一:使用java中的大整数处理库函数,java.math.BigInteger,java.math.BigDecimal; 方法二:不利用库函数,自己实现其功能,可以练习自己对待复杂问题的处理能力,提高编程水平. 此代码中利于两者的结合,利于库函数可以看自己编写的代码的正确性. 1.主函数 import java.math.BigDecimal; import java.util.Scanner;

ACM: A + B Problem II (两个大整数相加)

Code: #include <stdlib.h> #include <stdio.h> #include <string.h> #define MAX 1000 //给数组赋值 void arrV(int a[],int len,int p){ int i; for(i=0;i<len;i++){ a[i]=p; } } //打印数组中的运算结果 void printRverse(int a[]){ int len=0,i=0; while(a[i]!=-1){

大数据开发之路---Java基础(一)

因为最近工作用到java,所以了解一些java的知识,当然这篇文章也是适用于有语言基础的,因为是用于快速熟悉java的一些语法规范,并没有整理细节的内容,零基础的不适合看这篇文章 Hello world 老规矩先来hello world代码: package study_java.ex01; public class HelloWorld { public static void main(String[] args){ System.out.println("hello world"

Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)

MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明文是yanzi1225627,得到MD5加密后的字符串是:14F2AE15259E2C276A095E7394DA0CA9  但不能由后面一大串倒推出yanzi1225627.因此可以用来存储用户输入的密码在服务器上.现在下载文件校验文件是否中途被篡改也是用的它,原理参见:http://blog.c

C#实现突破位数限制,用字符串对较大的数进行运算

有时会碰到数字太大无法用int运算的情况,比如1000的阶乘. 解决方法是用char.string代替int进行竖式计算,可进行加.减.乘.除.阶乘.组合.比较大小,下面的方法都测试过 1 #region 运算方法 2 // 计算组合数 3 public string GetCombination(int total, int num) 4 { 5 string result = ""; 6 string dividend = GetStringMultiply(GetFactoria

学习大数据为什么先学Java?

学习大数据是否必须会java? 很多零基础学员想学大数据都知道,学大数据部分课程之前要先学习一种计算机编程语言.大数据开发需要编程语言的基础,因为大数据的开发基于一些常用的高级语言,比如Java和.Net.不论是hadoop,还是数据挖掘,都需要有高级编程语言的基础. 因此,如果想学习大数据开发,还是需要至少精通一门高级语言. 常用计算机编程语言 计算机编程语言有很多,目前用的多一点的就是Java,c++,R,python等等.目前大多数学习大数据的人都是选择学习Java,很多培训机构针对零基础

大神必修课系列之java 分布式架构的原理解

分布式术语 1.1. 异常 服务器宕机 内存错误.服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用. 服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上. 网络异常 有一种特殊的网络异常称为--网络分区 ,即集群的所有节点被划分为多个区域,每个区域内部可以通信,但是区域之间无法通信. 磁盘故障 磁盘故障是一种发生概率很高的异常. 使用冗余机制,将数据存储到多台服务器. 1.2. 超时 在分布式系统中,一个请求除了成功和失败两种状态,还存在着超时状态. 可以

大神必修课系列之java 分布式架构的原理解析

分布式术语 1.1. 异常 服务器宕机 内存错误.服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用. 服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上. 网络异常 有一种特殊的网络异常称为--网络分区 ,即集群的所有节点被划分为多个区域,每个区域内部可以通信,但是区域之间无法通信. 磁盘故障 磁盘故障是一种发生概率很高的异常. 使用冗余机制,将数据存储到多台服务器. 1.2. 超时 在分布式系统中,一个请求除了成功和失败两种状态,还存在着超时状态. 可以