fork(1) download
  1. import java.util.ArrayList;
  2.  
  3. public class Main
  4. {
  5. /**
  6.   * The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17
  7.   * Find the sum of all the primes below two million.
  8.   * @param args
  9.   */
  10. public static void main(String[] args)
  11. {
  12. ArrayList<Integer> primes = new ArrayList<Integer>();
  13. int upper = 5000;
  14. for (int i = 2; i < upper; i++)
  15. {
  16. primes.add(i);
  17. }
  18. long sum = 0;
  19. for (int i = 0; i < primes.size(); i++)
  20. {
  21. if (true) // (isPrime(primes.get(i)))
  22. {
  23. for (int k = 2; k*primes.get(i) < upper; k++)
  24. {
  25. if (primes.contains(k*primes.get(i)))
  26. {
  27. primes.remove(primes.indexOf(k*primes.get(i)));
  28. }
  29. }
  30. }
  31. }
  32. for (int i = 0; i < primes.size(); i++)
  33. {
  34. sum += primes.get(i);
  35. }
  36. System.out.println(sum);
  37. }
  38.  
  39. public static boolean isPrime(int number)
  40. {
  41. for (int i = 2; i <= Math.sqrt(number); i ++)
  42. {
  43. if (number % i == 0)
  44. {
  45. return false;
  46. }
  47. }
  48. return true;
  49. }
  50. }
Success #stdin #stdout 0.25s 380352KB
stdin
5k  0.26s-381MB   
10k 0.84s-380MB   N^1.70  .... 2mln:  1h 55'
20k 3.09s-380MB   N^1.88  .... 2mln:  4h 55'   projection worsening
40k 12.81-380     N^2.05  .... 2mln: 10h 50'   projection worsening still ...
stdout
1548136