当我尝试编译此程序时,它给出了错误integer number too large: 11111111111
。怎么纠正这个?
class PrimeFactor {
public static void main(String[] args) {
int primeLimit = 11111111111;
int sum = 1;
for(int i = 1; i < primeLimit + 1; i++) {
if((primeLimit%i) == 0) {
sum *= i;
System.out.println(i);
}
if(sum == primeLimit) {
break;
}
}
}
}
答案 0 :(得分:1)
如果您的号码不是太大,您可以使用long
原语类型。 Long使用两倍int
次使用的位数,可以表示最多Long.MAX_VALUE = 2^63-1
的整数:
long primeLimit = 11111111111L;
当然你必须改变其他变量的类型,例如i
和sum
也是。
如果您想使用更大的数字,请使用BigInteger
。
BigInteger primeLimit = new BigInteger("11111111111111111111111");
如果你想使用BigInteger
,普通的算术运算符将不再有效。您必须使用BigInteger
的方法。
答案 1 :(得分:0)
有符号整数可以包含大小为2 ^ 31 - 1的值,即2147483647.使用long
或其他替代方法将起作用。