为int数据类型赋值

时间:2015-09-05 12:55:53

标签: java int

当我尝试编译此程序时,它给出了错误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;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

如果您的号码不是太大,您可以使用long原语类型。 Long使用两倍int次使用的位数,可以表示最多Long.MAX_VALUE = 2^63-1的整数:

long primeLimit = 11111111111L;

当然你必须改变其他变量的类型,例如isum也是。

如果您想使用更大的数字,请使用BigInteger

BigInteger primeLimit = new BigInteger("11111111111111111111111");

如果你想使用BigInteger,普通的算术运算符将不再有效。您必须使用BigInteger的方法。

答案 1 :(得分:0)

有符号整数可以包含大小为2 ^ 31 - 1的值,即2147483647.使用long或其他替代方法将起作用。