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.a+b

import java.util.*;
import java.math.BigInteger;

public class Main{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        BigInteger a,b;
        BigDecimal c,d;
        while(input.hasNext()) {
            //整数的大整数求和
            a = input.nextBigInteger();
            b = input.nextBigInteger();
            System.out.println(a.add(b));

            //小数的大整数求和
            c = input.nextBigDecimal();
            d = input.nextBigDecimal();
            System.out.println(c.add(d));
        }
    }
}

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]);
        }
    }
}

原文地址:https://www.cnblogs.com/tonyyy/p/10433460.html

时间: 2024-10-16 16:06:44

java 大数详细讲解的相关文章

JAVA接口详细讲解

接口 接口的概念 ?接口代表的是一个功能的集合,定义规范,所有的方法都是抽像方法,这是一种思想是一种规则,将这个种规则称为接口. 接口的定义 使用关键字 interface 叫做接口 修饰符 interface 接口名{//增加定义的功能,都是抽像的方法} 注:接口的源文件仍然是java文件,编译后仍为class文件. 代码参照: public interface Jiekou { //这里增加功能抽像方法 public abstract void fun(); } 接口特点 接口中的方法全是抽

HDU 1250 Hat&#39;s Fibonacci(Java大数相加)+讲解

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1250 Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1. F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n -

java中Integer包装类的详细讲解(java二进制操作,所有进制转换)

程序员都很懒,你懂的! 今天为大家分享的是Integer这个包装类.在现实开发中,我们往往需要操作Integer,或者各种进制的转换等等.我今天就为大家详细讲解一下Integer的使用吧.看代码: package com.herman.test; public class IntegerTest { public static void main(String[] args) { System.out.println("Integer中的常量***************************

(转)JAVA AJAX教程第三章—AJAX详细讲解

现在开始深入AJAX,这里还是按老思路,理论和实践相结合.这章的内容主要是讲解AJAX步骤详解,下一张将会用一个AJAX技术实现页面提示效果的实例来说明AJAX的实现. 一.AJAX步骤详解 AJAX实质上是遵循Request/Server模式来进行工作的,这个框架基本的流程包括下面几个具体的步骤: (1)       XMLHttpRequest对象初始化 (2)       发送请求 (3)       服务器接收请求并进行处理 (4)       服务器返回响应数据 (5)       客

java版b2b2c社交电商spring cloud分布式微服务 - particle云架构代码结构详细讲解

spring cloud云服务架构 - particle云架构代码结构,简单的按照几个大的部分去构建代码模块,让我们来回顾一下: 第一部分: 针对于普通服务的基础框架封装(entity.dao.service.controller.api)等第二部分: spring cloud通用微服务项目,可以监控左右微服务,当然,本身自己也是微服务.第三部分: 针对于框架内所有组件的封装,可以植入任何的模块项目中.第四部分: 自身项目的微服务业务,比如:会员模块.消息模块.资金模块.订单模块等. 我们针对于

详细讲解Android的网络通信(HttpUrlConnection和HttpClient)

前言,Android的网络通信的方式有两种:使用Socket或者HTTP,今天这一篇我们详细讲解使用HTTP实现的网络通信,HTTP又包括两种方式编程方式: (1)HttpUrlConnection: (2)HttpClient: 好了,我们直接进行讲解,当然之前也会有一部分有关Android网络通信的其他知识,我们也应该了解. 一.获取网络状态的方法 (1)MainActivity.java中的关键代码 1 2 3 4 5 6 7 8 //网络管理类,可以判断是否能上网,以及网络类型     

Spark SQL操作详细讲解

一. Spark SQL和SchemaRDD 关于Spark SQL的前生就不再多说了,我们只关注它的操作.但是,首先要搞明白一个问题,那就是究竟什么是SchemaRDD呢?从Spark的Scala API可以知道org.apache.spark.sql.SchemaRDD和class SchemaRDD extends RDD[Row] with SchemaRDDLike,我们可以看到类SchemaRDD继承自抽象类RDD.官方文档的定义是"An RDD of Row objects tha

JSP的静态包含和动态包含详细讲解 (一)

JSP包含有两种方式:静态包含和动态包含.下面我们将通过JSP运行的特点(转换为servlet再执行)来比较二者的区别. 一.静态包含  <%@include file="url"%> 我们先写一个正常的小项目,来看下静态包含是如何运行的. 测试一: top.jsp页面: <%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncodin

《The Swift Programming Language 》——函数 使用方法详细讲解

函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标示函数做什么,并且当函数需要执行的时候,这个名字会被"调用". Swift 统一的函数语法足够灵活,可以用来表示任何函数,包括从最简单的没有参数名字的 C 风格函数,到复杂的带局部和外部参数名的 Objective-C 风格函数.参数可以提供默认值,以简化函数调用.参数也可以即当做传入参数,也当做传出参数,也就是说,一旦函数执行结束,传入的参数值可以被修改. 在 Swift 中,每个函数都有一种类型,包括函数的参