import java.util.ArrayList;
public class Main
{
/**
* The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17
* Find the sum of all the primes below two million.
* @param args
*/
public static void main
(String[] args
) {
ArrayList<Integer> primes = new ArrayList<Integer>();
int upper = 2000000;
primes.ensureCapacity(upper);
for (int i = 0; i < upper; i++)
{
primes.add(i);
}
long sum = 0;
for (int i = 2; i <= upper / i; i++)
{
if ( primes.get(i) > 0 )
{
for (int k = i*i; k < upper ; k+=i)
{
primes.set(k,0);
}
}
}
for (int i = 2; i < upper; i++)
{
sum += primes.get(i);
}
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CgpwdWJsaWMgY2xhc3MgTWFpbgp7CiAgLyoqCiAgICogVGhlIHN1bSBvZiB0aGUgcHJpbWVzIGJlbG93IDEwIGlzIDIgKyAzICsgNSArIDcgPSAxNwogICAqIEZpbmQgdGhlIHN1bSBvZiBhbGwgdGhlIHByaW1lcyBiZWxvdyB0d28gbWlsbGlvbi4KICAgKiBAcGFyYW0gYXJncwogICAqLwogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgewogICAgQXJyYXlMaXN0PEludGVnZXI+IHByaW1lcyA9IG5ldyBBcnJheUxpc3Q8SW50ZWdlcj4oKTsKICAgIGludCB1cHBlciA9IDIwMDAwMDA7CiAgICBwcmltZXMuZW5zdXJlQ2FwYWNpdHkodXBwZXIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1cHBlcjsgaSsrKQogICAgewogICAgICBwcmltZXMuYWRkKGkpOwogICAgfQogICAgbG9uZyBzdW0gPSAwOwogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gdXBwZXIgLyBpOyBpKyspCiAgICB7CiAgICAgIGlmICggcHJpbWVzLmdldChpKSA+IDAgKQogICAgICB7CiAgICAgICAgZm9yIChpbnQgayA9IGkqaTsgayA8IHVwcGVyIDsgays9aSkKICAgICAgICB7CiAgICAgICAgICBwcmltZXMuc2V0KGssMCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBmb3IgKGludCBpID0gMjsgaSA8IHVwcGVyOyBpKyspCiAgICB7CiAgICAgIHN1bSArPSBwcmltZXMuZ2V0KGkpOwogICAgfQogICAgU3lzdGVtLm91dC5wcmludGxuKHN1bSk7CiAgfQp9
d2FzOiA0S0QxSVcgICAgICAgICAgICAgICAgICAgbm93Ogo1ayAgMC4yNnMtMzgxTUIgICAgICAgICAgICAgICAgNTBrICAgMC4wOHMtMzgwTUIKMTBrIDAuODRzLTM4ME1CICAgTl4xLjcwICAgICAgIDUwMGsgIDAuMTVzLTM4ME1CICAgCjIwayAzLjA5cy0zODBNQiAgIE5eMS44OCAgICAgICAxbWxuICAwLjI4cy0zODBNQiAgTl4wLjkKNDBrIDEyLjgxLTM4MCAgICAgTl4yLjA1ICAgICAgIDJtbG4gIDAuNTNzLTM4ME1CICBOXjAuOQ==
was: 4KD1IW now:
5k 0.26s-381MB 50k 0.08s-380MB
10k 0.84s-380MB N^1.70 500k 0.15s-380MB
20k 3.09s-380MB N^1.88 1mln 0.28s-380MB N^0.9
40k 12.81-380 N^2.05 2mln 0.53s-380MB N^0.9