class Primo { long calculaNumeroDivisores( long n) { long i; long nDiv; i = 1; nDiv = 1; // o número divide ele mesmo while ( i <= n - 1) { if ( n % i == 0) nDiv = nDiv + 1; i = i + 1; } return nDiv; } boolean éPrimo( long n) { if (calculaNumeroDivisores( n ) == 2) return true; else return false; } long calculaFatorial (long n) { long fat = 1; while (n >= 2) { fat = fat * n; n = n - 1; } return fat; } long raizAproximada(long n) { long r = 1; while (r * r <= n) { r = r + 1; } return r - 1; } boolean éWilson (long n) { long fatNMenosUm; fatNMenosUm = calculaFatorial( n - 1); if ((fatNMenosUm % n != 0) && (raizAproximada( n) * raizAproximada( n) != n)) return true; else return false; } void testaWilson() { long i = 1; while (i <= 100) { if (éPrimo( i) != éWilson( i)) System.out.println("Furou para " + i); i = i + 1; } System.out.println(" Fim do teste"); } }