我想取出存储在JAVA中BigInteger的巨大数字的最后一位

时间:2018-08-01 12:20:58

标签: java factorial

import java.math.BigInteger;
import java.util.Scanner;

public class LastFact
{
    // Returns Factorial of N
    static BigInteger factorial(int N)
    {
        // Initialize result
        BigInteger f = new BigInteger("1"); // Or BigInteger.ONE

        // Multiply f with 2, 3, ...N
        for (int i = 2; i <= N; i++)
            f = f.multiply(BigInteger.valueOf(i));

        return f;
    }

    // Driver method
    public static void main(String args[]) throws Exception
    {
        int N = 300;

        System.out.println(factorial(N));
    }
}

4 个答案:

答案 0 :(得分:1)

如果您要删除N的最后BigInteger位数字,请除以10^N,例如删除后两位除以10^2=100

BigInteger i = new BigInteger("123456");
BigInteger j = i.divide(BigInteger.valueOf(100)); // j=1234 

要提醒您要删除,请使用reminder()方法:

BigInteger i = new BigInteger("123456");
BigInteger j = i.reminder(BigInteger.valueOf(100)); // j=56 

请注意,由于您要计算较大的阶乘,因此可能要使用Stirling's approximation

答案 1 :(得分:1)

要取最后一位数字,除以BigInteger的余数除以10

System.out.println(f.remainder(BigInteger.TEN));

答案 2 :(得分:0)

将大整数转换为字符串,然后获取最后一位。

public static void main(String args[]) throws Exception
{
    int N = 300;

        String bigNumber = factorial(N).toString();
        String lastNumberStr = bigNumber.charAt(bigNumber.length()-1)+"";
        int lastNumber = Integer.parseInt(lastNumberStr);

        System.out.println(lastNumber);
}

答案 3 :(得分:0)

您可以编写一个函数:

public byte lastDigit(BigInteger value) {
    String str = String.valueOf(value);
    String digit = str.substring(str.length() - 1, str.length());
    return Byte.valueOf(digit);
}