自己写的一个大数运算程序,算法神马的都是最原始的——模仿电路中的加法器和乘法器的运算过程——不过好歹是实现了。大神看到欢迎指点,若是像我这样的小菜鸟也欢迎留言讨论。
本程序写了一个BigInt的大整数类,可用用字符串直接初始化。重新了toString方法方便输出。实现了基础的一位数加、乘方法,继而实现大数的加、乘。当初为了方便自己观察过程,每个计算方法都输出了相应的信息,用doShowInfo(boolean isShow)来控制是否显示信息。
(好吧,我知道自己写得很烂,将就着看吧)
主方法:
//计算1^1+2^2+3^3+...+20^20;
public class LargeNumber {
/**
* @param args
*/
public static void main(String[] args) {
BigInt.doShowInfo(false);
BigInt result = new BigInt("0");
BigInt i = new BigInt("1");
final BigInt Bi_1 = new BigInt("1");
final BigInt Bi_20 = new BigInt("20");
while(!BigInt.equal(i, Bi_20)){
result = BigInt.plus(result , BigInt.factorial(i, i) );
i = BigInt.plus(i, Bi_1);
}
System.out.println("1^1+2^2+3^3+...+20^20 = "+result);
}
};
BigInt类
public class BigInt {
public char[] number;
private static boolean isShowInfo = false;
BigInt(int len) {
number = new char[len];
}
// 用数组储存大数,倒叙存放
// 即,若要储存123456789这个数字
// 1 2 3 4 5 6 7 8 9
// 对应的数组下标为: 8 7 6 5 4 3 2 1 0
BigInt