为 int 数据类型分配大值

assign large value to int data type

当我尝试编译这个程序时,它给出了一个错误 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^31 - 1 的值,即 2147483647。使用 long 或其他一些替代方法也可以。

如果你的数字不是太大,你可以使用long原始类型。 Long 使用的位数是 int 使用的两倍,并且可以表示最大 Long.MAX_VALUE = 2^63-1:

的整数
long primeLimit = 11111111111L;

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

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

BigInteger primeLimit = new BigInteger("11111111111111111111111");

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