//联合国科教文组织要统计人口,显然一般的int不能满足需要,因此要求定义一个BigInteger的新类,
//多写孔乙己提醒,那是我初学Java时写的,实在不该帖出来,现在重写了代码.
//时间关系,只实现了加法.
BigIntegerTest.java
/***//**
*@authorRey
*@date2006-10-2
*/
publicclassBigIntegerTestextendsTestCase...{
publicvoidtest1()...{
BigIntegerb1=newBigInteger("11");
BigIntegerb2=newBigInteger("11");
BigIntegerb3=newBigInteger("2");
assertEquals(b1,b2);
assertFalse(b1.equals(b3));
}
publicvoidtest2()...{
BigIntegerb1=newBigInteger("12");
BigIntegerb2=newBigInteger("8");
BigIntegerb3=b1.add(b2);
assertEquals(newBigInteger("20"),b3);
}
publicvoidtest3()...{
BigIntegerb1=newBigInteger("99");
BigIntegerb2=newBigInteger("99");
assertEquals(newBigInteger("198"),b1.add(b2));
}
publicvoidtest4()...{
BigIntegerb1=newBigInteger("9999999999999999");
BigIntegerb2=newBigInteger("1");
assertEquals(newBigInteger("10000000000000000"),b1.add(b2));
}
publicvoidtest5()...{
BigIntegerb1=newBigInteger("1");
BigIntegerb2=newBigInteger("9999999999999999");
assertEquals(newBigInteger("10000000000000000"),b1.add(b2));
}
}
BigInteger.java
/***//**
*@authorRey
*@date2006-10-2
*
*/
publicclassBigInteger...{
privateStringvalue=null;
publicBigInteger(Stringvalue)...{
this.value=value;
}
publicBigIntegeradd(BigIntegerb2)...{
char[]a=value.toCharArray();
char[]b=b2.value.toCharArray();
/***//**把最长的放到a里面*/
if(a.length<b.length)...{
char[]temp=null;
temp=a;
a=b;
b=temp;
}
intsize=a.length+1;
char[]result=newchar[size];
intj=result.length-1;
/***//**把barray的值copy到result中,前面空位补48*/
for(inti=b.length-1;i>=0;i--,j--)...{
result[j]=b[i];
}
for(;j>=0;j--)...{
result[j]=48;
}
/***//**result=a+result*/
for(inti=a.length-1,sum=0;i>=0;i--)...{
sum=a[i]+result[i+1];
if(sum>=106)...{
result[i+1]=(char)(sum-10-48);
result[i]++;
}else...{
result[i+1]=(char)(sum-48);
}
}
/***//**char[]转化为Stringvalue*/
StringBuffersb=newStringBuffer();
for(inti=0;i<result.length;i++)...{
if(i==0&&(int)result[i]==48)
continue;
sb.append((char)result[i]);
}
returnnewBigInteger(sb.toString());
}
@Override
publicinthashCode()...{
finalintPRIME=31;
intresult=1;
result=PRIME*result+((value==null)?0:value.hashCode());
returnresult;
}
@Override
publicbooleanequals(Objectobj)...{
if(this==obj)
returntrue;
if(obj==null)
returnfalse;
if(getClass()!=obj.getClass())
returnfalse;
finalBigIntegerother=(BigInteger)obj;
if(value==null)...{
if(other.value!=null)
returnfalse;
}elseif(!value.equals(other.value))
returnfalse;
returntrue;
}
@Override
publicStringtoString()...{
returnvalue;
}
}
分享到:
相关推荐
两个超出长整型范围的整数相加 c语言 小程序
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和...
(5) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; (6) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; (7) 动态申请三个矩阵:A1、A2、A3; (8) 初始化A1...
//(4) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; //(5) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; //(6) 定义三个矩阵:A1、A2、A3; //(7) 初始...
这段代码展示了以下几个C++的语法和概念: 包含头文件:使用#include 包含头文件iostream,使得可以使用标准输入...以上代码实现了一个简单的功能,计算两个数的和并输出结果,同时还展示了函数定义和调用的基本语法。
(5) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; (6) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; (7) 动态申请三个矩阵:A1、A2、A3; (8) 初始化 ...
(4) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; (5) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; (6) 定义三个矩阵:A1、A2、A3; (7) 初始化A1、A2...
(4) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; (5) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; (6) 定义三个矩阵:A1、A2、A3; (7) 初始化A1、A2...
如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。例如: 十进制长整常数 158L (十进制为158) 358000L (十进制为-358000) 八进制长整常数 012L (十进制为10) 077L (十...
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和...
2.4 怎样表示一个算法 24 2.4.1 用自然语言表示算法 24 2.4.2 用流程图表示算法 24 2.4.3 三种基本结构和改进的流程图 28 2.4.4 用N-S 流程图表示算法 29 2.4.5 用伪代码表示算法 30 2.4.6 用计算机语言表示算法 31 ...
2.4 怎样表示一个算法 24 2.4.1 用自然语言表示算法 24 2.4.2 用流程图表示算法 24 2.4.3 三种基本结构和改进的流程图 28 2.4.4 用N-S 流程图表示算法 29 2.4.5 用伪代码表示算法 30 2.4.6 用计算机语言表示算法 31 ...
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=...
c. 该程序要有顾客购票,查询班机起飞降落时间,班机订票情况等3个功能,并实现菜单选项 5、 用C++编写一个简单的行编辑器,每个结点保存一行文本,程序以E file开始,然后显示行数和提示符,如果输入I,后面...
编写C程序,实现以下功能: 1)每名学生信息包括:学号(8个字符)、姓名(最多20个字符)、5门课程成绩(整型)、总成绩(整型)。 2)声明结构体类型用以保存学生信息。 3)从键盘读入全班同学的信息(不超过50人,总...
A) 程序运行到第6行会出现编译错误,因为c为char类型,不能把一个汉字赋给一个字符型。 B) 程序运行到第7行会出现编译错误,因为字符型与整型不能进行加法运算。 C) 程序能够正常编译和运行,但是不会输出任何结果。...
cout输入第一个大数:"; cin>>a; cout输入第二个大数:"; cin>>b; while(1) { cout(1:加法 2:减法 3:比较 4:乘法 5:除法 6:求余)请选择:"; cin>>g; x=strlen(a); y=strlen(b); if(a[0]=='-' && b[0]=='-'...