zoukankan      html  css  js  c++  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<b

    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 class Main{
        public static void main(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<b)
             
             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.*;
    import java.math.BigInteger;
    import java.util.Scanner;
    public class Main{
        public static void main(String[] args) {
            Scanner input = new Scanner(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.*;
    import java.math.BigInteger;
    import java.util.Scanner;
    public class Main{
        public static void main(String[] args) {
            Scanner input = new Scanner(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]);
            }
        }
    }
  • 相关阅读:
    httpclient 使用问题记录:org.apache.http.HttpException: Unsupported Content-Coding:GLZip
    Gitserver端密码变更,但是本地gitconfig配置未变更账号和密码问题解决
    线程池ThreadPoolExecutor学习
    Java 网络编程
    org.apache.ibatis.binding.BindingException: Invalid bound statement Mybatis绑定错误问题解决
    Java string类
    maven3.6.2 版本 在idea 2019.2.2下遇到的问题解决记录
    python
    django-URL与视图配置
    python 的datetime模块使用
  • 原文地址:https://www.cnblogs.com/tonyyy/p/10433460.html
Copyright © 2011-2022 走看看