Вы видите исключение деления на ноль, потому что оператор в вашей программе пытается разделить значение на ноль, и это не разрешено в Java или любом другом языке программирования, о котором я знаю.
Вы можете сделать две вещи: (1) проверить значение делителя и, если оно равно нулю, не делить или (2) перехватить исключение, используя try / catch.
См. Java if против try / catch overhead , а также Использование try-catch java
Глядя на ваш код, я не уверен, где происходит деление на нольхотя это может быть та область, где вы используете оператор модуля (%
), чтобы проверить, равен ли остаток деления нулю:
for(int m=k+1; m<range[i][1]; m++)
{
int x = prime[k];
if(prime[m] % x == 0) // use modulus operator to check the remainder
{
prime[m] = 0;
}
}
Возможно, вы захотите сделать что-то вроде:
for(int m=k+1; m<range[i][1]; m++)
{
int x = prime[k];
if(x == 0 || prime[m] % x == 0) // use modulus operator to check the remainder
{
prime[m] = 0;
}
}