有一个很大很大的数,用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实现谢谢的主要内容,如果未能解决你的问题,请参考以下文章

算法:如何实现两个大数相加

算法:如何实现两个大数相加

大数字操作BigInteger的使用 BigDecimal(很大的小数)

大清单报表应当怎么做?

java大数BinInteger

Cryptography Reloaded UVALive - 4353(BigInteger)