java BigInteger使用

  虽然说我不怎么会用java写一些东西,但是java里的biginteger我还是很喜欢的。这个类解决了,我们在其他很多语言中遇到的问题:大数。比如在C++中我们要计算一个大小超过long long的数就必须采取很多的代码来解决。简单一点的课余采取用几个数来存数,复杂的我们就要用到字符串的处理通过,通过字符串我们能够处理任意大的数(理论上,实际由于内存之类的原因还是不行的)。

  但是使用字符串的形式实现的方式是十分复杂的。我们就最简单的加法为例说明一下,并展望一下乘法甚至是除法的处理方式。字符串处理大数的本质就是“手工计算”,这里的手工当然不是让你离开电脑去自己算,而是说让电脑按照我们手算的方式进行计算,只是用字符串储存一切结果。比如加法我们使用的方法就是字符串中的每个字符一位一位加,并且自己实现进位功能。下面给一个例子:

如果说加法的复杂程度还可以接受那你还而已考虑一下乘法。。。

  好了废话不多说,介绍一下主角:

  BIgInteger是java中math包里面的一个类,它可以提供各种各样的大数操作,具体的参考api文档自然是最好的,我这里就只给出一个例子,里面调用的是转换函数,可以简单完成字符串到大数的转换。(个人觉的算是复杂一点的应用了)

 1 /*
 2  * To change this template, choose Tools | Templates
 3  * and open the template in the editor.
 4  */
 5 
 6 package bigfor2013;
 7 import java.math.*;
 8 import java.util.*;
 9 import java.io.*;
10 /**
11  *
12  * @author lenovo
13  */
14 public class Bigfor2013 {
15 
16     /**
17      * @param args the command line arguments
18      */
19     public static void main(String[] args) {
20         // TODO code application logic here
21         Scanner cin=new Scanner(new BufferedInputStream(System.in));
22         BigInteger a,b;
23         a=cin.nextBigInteger();
24         int from ,to;
25         from =cin.nextInt();
26         to=cin.nextInt();
27         String s;
28         s=cin.next();
29         BigInteger c=new BigInteger(s,from);
30         System.out.println(c.toString(to));
31     }
32 }

 

posted @ 2013-12-23 00:31  mrbean  阅读(3248)  评论(0编辑  收藏  举报