Hum… pra começar, esse não é o melhor jeito de saber se um número é primo ou não.
Está simplesmente errado, e fim de papo.
O seu programa só consegue determinar se um número de 1 até 1000000 é primo; acima desse valor, você vai ter vários números considerados primos, mas que não o são. O limite correto para as divisões sucessivas é a raiz quadrada de N.
Depois, você quer saber se o número é divisível por outro (e nesse caso o resto da divisão é zero), não se o resto da divisão é inteiro (ele sempre é, pela definição de resto). Um pouco de matemática não faz mal a ninguém…
Você teria de corrigir seu programa para (e supondo que você ainda queira usar esse método grotesco das divisões sucessivas):
class EhPrimo {
public static boolean ehPrimo (int n) {
if (n == 2) return true; // aham - falha nossa
int sqrtN = (int) Math.sqrt (n);
if (n % 2 == 0) {
return false;
}
for (int i = 3; i <= sqrtN; i = i + 2) {
if (n % i == 0) {
return false;
}
}
return true;
}
public static void main (String[] args) {
System.out.println (ehPrimo (24691357));
System.out.println (ehPrimo (488560001));
}
}