有一个很大很大的数,用BigInteger也装不下,如何计算它的乘方?Java实现谢谢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有一个很大很大的数,用BigInteger也装不下,如何计算它的乘方?Java实现谢谢相关的知识,希望对你有一定的参考价值。
package id;public class TestString2
public static void main(String[] args)
String num = "10001125";
System.out.println(pow2(num));
public static String pow2(String num)
char[] ch = num.toCharArray();
int len = ch.length;
int[] in = new int[len];
for (int i = 0; i < len; i++)
in[i] = Integer.parseInt(String.valueOf(ch[i]));
int[] result = new int[len * 2];
for (int i = len - 1; i >= 0; i--)
for (int j = len - 1; j >= 0; j--)
result[i + j + 1] += in[i] * in[j];
for (int i = result.length - 1; i >= 0; i--)
if(result[i]>9)
result[i-1] += result[i]/10;
result[i] %= 10;
String results = "";
boolean firstZero = true;
for(int i =0;i<result.length;i++)
if(firstZero && result[i] == 0)
else
results += String.valueOf(result[i]);
firstZero = false;
return results;
参考技术A 这个可以试试用数组来解决吧。
把这个大数分段,每个数是数组中的一个元素。比如1234567890,就是1,2,3,4,5,6,7,8,9,0;
然后用最基本的乘法去一位一位的计算,并算好进位。
java大数BinInteger
当我们遇到long不行的时候就要考虑这个BinInteger了,因为这是只要你内存够大,就能输入很大的数,用这个处理高精度问题,是很容易的一件事,对于我这刚学java的萌新来说,长见识了,确实比C方便
BigInteger 任意大的整数,原则上是,只要你的计算机的内存足够大,可以有无限位的
强制类型转换int---BigInteger
BigInteger.valueOf(k);
valueOf:赋初值
add:+ a.add(b);
subtract:-
multiply:*
divide:/
remainder:this % val
divideAndRemainder:a[0]=this / val; a[1]=this % val
pow:a.pow(b)=a^b
gcd,abs:公约数,绝对值
negate:取负数
signum:符号函数
mod:a.mod(b)=a%b;
abs() //返回其值是此BigInteger的绝对值的BigInteger。
add(BigInteger val) //返回其值为(this+val)的BigInteger。
subtract(BigInteger val) //返回其值为(this-val)的BigInteger。
multiply(BigInteger val) // 返回其值为(this*val)的BigInteger。
divide(BigInteger val) //返回其值为(this/val)的BigInteger。
remainder(BigInteger val) //返回其值为(this%val)的BigInteger。
compareTo(BigInteger val) //将此BigInteger与指定的BigInteger进行比较。返回值1、0、-1分别表示大于、等于、小于
pow(int exponent) //返回当前大数的exponent次幂。
toString() //返回此BigInteger的十进制字符串表示形式。
toString(int radix) //返回此BigInteger的给定基数(radix进制)的字符串表示形式。
资源参考:https://www.cnblogs.com/jin-nuo/p/5313205.html
以上是关于有一个很大很大的数,用BigInteger也装不下,如何计算它的乘方?Java实现谢谢的主要内容,如果未能解决你的问题,请参考以下文章