【发布时间】:2016-03-18 03:13:52
【问题描述】:
通过引用数学 stackexchange 中的 this 问题,我尝试编写一个 java 程序来查找可能的结果。
class testing{
public static void main(String []args){
for(int Num=36;Num<1000000;Num++){
int[] Fac=new int[4];
for(int Div=1,ar=0;(Div<=Num)&(ar<Fac.length);Div++){
if((Num % Div)==0){
Fac[ar]=Div;
ar++;
}
}
int T=0;
for(int y:Fac){
y*=y;
T+=y;
}
if(T==Num){
for(int x:Fac){
System.out.print( x+",");
}
System.out.println(":"+Num);
}
}
}}
我在这里使用了int 数据类型并检查了多达 1000000 个数字。但我发现只有 130 个在满足问题必要条件的范围内。
我有一个问题,如果在int 或long 范围之外还有更多示例?是的,我发现BigInteger 会来救援。
但是如果我想将这些Integer 数据类型值替换为BigInteger 对象类型值,我是否必须重新编写整个代码?或者有什么方法可以将这些 int 类型转换为 BigInteger?
其实这是一个小源代码,用BigInteger再写一次也不难。但是,如果我们用integers 编写了一个大程序,然后我们需要大整数而不是小整数呢?
【问题讨论】:
-
BigInteger 将比 int 或 long 原语占用更多的内存,而且速度会很多。就像,慢几个数量级。对于大多数用法,long 就可以了。
-
您不能重载通常的整数算术运算符“+”、“-”、“*”等来使用 BigIntegers,如果这是您所要求的。
标签: java math int biginteger