java 大整数运算以及BigInteger的用法

来源:互联网 发布:linux切换到Sql命令 编辑:程序博客网 时间:2024/05/22 15:45

大整数相加
给出四个可能会很大的数,求和;
代码:

import java.io.*; import java.math.BigInteger;import java.util.*;public class Main2 {    public static void main(String[] args) {        // TODO Auto-generated method stub        Scanner reader = new Scanner(System.in);        int t;        t = reader.nextInt();        for(int i=1;i<=t;i++)        {            BigInteger a, b, c, d;            a = reader.nextBigInteger();            b = reader.nextBigInteger();            c = reader.nextBigInteger();            d = reader.nextBigInteger();            b = b.add(a);            c = c.add(b);            d = d.add(c);            System.out.println(d);        }    }}

大整数的定义:
BigInteger a, b, c, d;
大整数的输入:
a = reader.nextBigInteger();
b = reader.nextBigInteger();
c = reader.nextBigInteger();
d = reader.nextBigInteger();

大整数之间的加法,要用到函数

        c = c.add(b);        //c=c+b;        d = d.add(c);        //d=d+c;

给出一个n,求从1加到n的值;
代码:

import java.math.*;import java.util.*;public class Main2 {public static void main(String[] args) {  Scanner reader=new Scanner(System.in);    long n;    while(reader.hasNextLong())    {        n=reader.nextLong();        BigInteger sum=BigInteger.ZERO;        long i;        for(i=1;i<=n;i++)        {            sum=sum.add(BigInteger.valueOf(i));        }        System.out.println(sum);    }   }}

BigInteger.ZERO 在BigInteger内部定义的一个代表数字0的常量;
BigInteger.valueOf();只特定用于取long的值,好像int也可以;
java.math.BigInteger.valueOf()方法;
[http://www.yiibai.com/java/math/biginteger_valueof.htm]);//这里介绍的很详细;
注:
【1】长整型为long,定义一个变量,给这个变量赋值的时候,
long l1=123456789L;
需在数字末尾加“L”。(貌似L大写小写都可以);
【2】long a=10l; 等同于 a=new long(10l);
java.math.BigInteger.abs()方法,取绝对值;
链接:http://www.yiibai.com/java/math/biginteger_abs.html;
乘法:
求n的阶乘;
代码:

import java.math.*;import java.util.*;public class Main2 {public static void main(String[] args) {  Scanner reader=new Scanner(System.in);    int n;    while(reader.hasNextLong())    {        n=reader.nextInt();        BigInteger mul=BigInteger.ONE;        int i;        for(i=1;i<=n;i++)        {            mul=mul.multiply(BigInteger.valueOf(i));        }        System.out.println(mul);    }   }}

BigInteger.ONE=1;
乘法的操作:(与加法类似);
mul=mul.multiply(BigInteger.valueOf(i));
//mul=mul*i;