fork(1) download
  1.  
  2. class Prime{
  3. public int num;
  4. public boolean[] primeData;
  5. public boolean[] primeDataSolved;
  6.  
  7. public Prime(int n){
  8. num=n;
  9. initialize();
  10. solve();
  11. for (int i=-8;i<=8;i++)
  12. System.out.println("isPrime("+(num/2+i)+") -> "+isPrime(num/2+i));
  13. }
  14.  
  15. public static void main(String[] args){
  16. new Prime(1000100);
  17. }
  18.  
  19. public void initialize(){
  20. primeData = new boolean[num]; // 全てfalse
  21. primeDataSolved = new boolean[num]; // 全てfalse
  22. primeData[0]=false; // ?
  23. primeData[1]=false;
  24. primeData[2]=true;
  25.  
  26. }
  27.  
  28. public void solve(){
  29. for (int i=3;i<num;i++){
  30. int j;
  31. if (primeDataSolved[i]==true) continue;
  32. primeDataSolved[i]=true;
  33. for (j=2;j*j<i;j++)
  34. if (i%j==0) break;
  35. if (i%j!=0){
  36. primeData[i]=true;
  37. for (j=1;j*i<num;j++)
  38. primeDataSolved[j*i]=true;
  39. }
  40. }
  41. }
  42.  
  43. public boolean isPrime(int i){
  44. if (i<0 || num<=i) return false;
  45. return primeData[i];
  46. }
  47.  
  48. }
Success #stdin #stdout 1.19s 320512KB
stdin
Standard input is empty
stdout
isPrime(500042) -> false
isPrime(500043) -> false
isPrime(500044) -> false
isPrime(500045) -> false
isPrime(500046) -> false
isPrime(500047) -> false
isPrime(500048) -> false
isPrime(500049) -> false
isPrime(500050) -> false
isPrime(500051) -> false
isPrime(500052) -> false
isPrime(500053) -> false
isPrime(500054) -> false
isPrime(500055) -> false
isPrime(500056) -> false
isPrime(500057) -> true
isPrime(500058) -> false