Advertisement
Guest User

Untitled

a guest
Oct 31st, 2015
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.71 KB | None | 0 0
  1. public static void eratoImproved(long max){
  2.  
  3. long start = System.currentTimeMillis();
  4.  
  5. List<Long> invalidated = new ArrayList<>(); // where invalidated numbers will be stored.
  6.  
  7. // prepare
  8. double maxFac = Math.sqrt(max);
  9. for(long f = 2; f <= maxFac; f++){
  10. boolean isNew = true;
  11. for(long l : invalidated){
  12. if(f % l == 0){
  13. isNew = false;
  14. }
  15. }
  16. if(isNew) {
  17. invalidated.add(Math.round(f + 0.0));
  18. }
  19. f++;
  20. }
  21.  
  22. ArrayList<Long> primes = new ArrayList<>();
  23.  
  24.  
  25. for(long prime : invalidated){
  26. primes.add(prime);
  27. }
  28.  
  29. for(long i = 3; i <= max; i += 2){
  30. boolean v = true;
  31. for(long s : invalidated){
  32. if(i % s == 0){
  33. v = false;
  34. break;
  35. }
  36. }
  37.  
  38. if(v){
  39. primes.add(i);
  40. if(primes.size() >= 150){
  41. String s = Math.round(((i + 0.0)/max)*100) + "%: ";
  42. for(long l : primes){
  43. s += l + "/";
  44. }
  45. System.out.println(s);
  46. primes.clear();
  47. }
  48.  
  49. }
  50. i += 2;
  51. }
  52. System.out.println("Completed search!");
  53. String s = "Remaining primes: ";
  54. for(long l : primes){
  55. s += l + "/";
  56. }
  57. System.out.println(s);
  58. primes.clear();
  59.  
  60. System.out.println("Conducted search in " + (System.currentTimeMillis() - start)/1000 + " seconds.");
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement