java大数比较大小_java 大数详细讲解

介绍

java中用于操作大叔的类主要有俩种 第一个是BigInteger,代表大整数。第二个是BigDecimal,代表大浮点数。两种类的操作方法类似,所以我们只讲解BigInterger的用法

基本用法

Scanner input = new Scanner(System.in);

BigInteger a = input.nextBigInteger();

BigInteger b = input.nextBigInteger();

1.更改为大数数据类型

String s = "12345678987654321"

BigInteger a = new BigInteger(s);

int a =123456;

BigInteger a = BigInteger.valueOf(a);

String s = "12345678987654321";

BigInteger a =BigInteger.valueOf(s,10);//将字符串转换成10进制的大数

2.大整数的四则运算(都不改变a b的值)

a.add(b)    //求a+b 加法

a.subtract(b)  //求a-b 减法

a.divide(b)   //求a/b 除法

a.multiply(b)  //求a*b 乘法

3.大整数比较大小

a.equals(b);  //如果a b相等 返回true 否则返回false

if(a.equals(a.max(b)))   //如果a等于a和b中的较大者 即a>b 否则a

4.常用方法

a.mod(b)  //求余数即a%b

a.gcd(b)   //求最大公约数

a.max(b)  //求最大值

a.min(b)   //求最小值

a.pow(b)  //求a^b的大数

5.求大数的长度

a.toString().length();

例题

1.模板

import java.math.BigInteger;

import java.util.*;public classMain{public static voidmain(String[] args)

{

Scanner input= new Scanner(System.in);

BigInteger a= input.nextBigInteger();//输入一个大数

BigInteger b = BigInteger.valueOf(0);//初始化一个为0的大数

BigInteger c = BigInteger.valueOf(1);//初始化一个为1的大数

BigInteger []shu = new BigInteger[4040];//初始化一个4040的大数数组

int I = 1234567;

BigInteger d= BigInteger.valueOf(I);//将int转化成BigInt

String s = "1234567";

BigInteger f= new BigInteger(s); //将String转为BigInt

int e = 10010;

a= a.add(b); //a = a+b

a = a.subtract(b); //a = a-b

a = a.divide(b); //a = a/b

a = a.multiply(b); //a = a*b

a = a.mod(b); //a = a%b

if(a.equals(a.max(b)));//if(a>b)

if(b.equals(a.max(b)));//if(a

c= a.pow(e); //a = a^e e必须为int类型

c = a.gcd(b); //a和b的最大公约数

int len = a.toString().length(); //求大数的长度

while(input.hasNext())//一直输入

{

BigInteger k=input.nextBigInteger();

}

}

}

2.大整数阶乘(一个模板)

import java.util.*;importjava.math.BigInteger;importjava.util.Scanner;public classMain{public static voidmain(String[] args) {

Scanner input= newScanner(System.in);

BigInteger []f= new BigInteger[5000];

f[0] = f[1] =BigInteger.ONE;for(int i=2;i<=10000;i++)

{

f[i]= f[i-1].multiply(BigInteger.valueOf(i));

}while(input.hasNext()) {int m =input.nextInt();

System.out.println(f[m]);

}

}

}

3.Fibonacci数

import java.util.*;importjava.math.BigInteger;importjava.util.Scanner;public classMain{public static voidmain(String[] args) {

Scanner input= newScanner(System.in);

BigInteger []f= new BigInteger[5010];

f[0] = f[1] =BigInteger.ONE;for(int i=2;i<=5000;i++)

{

f[i]= f[i-1].add(f[i-2]);

}while(input.hasNext()) {int m =input.nextInt();

System.out.println(f[m]);

}

}

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值