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

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

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;

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值