// code obtained from studyalgorithms.com
class SieveOfEratosthenes {
static void sieveOfEratosthenes(int n) {
// Create a boolean array "prime[0..n]" and initialize
// all entries it as true. A value in isPrime[i] will
// finally be false if i is Not a prime, else true.
boolean isPrime[] = new boolean[n + 1];
for (int i = 0; i < n; i++)
isPrime[i] = true;
for (int number = 2; number * number <= n; number++) {
// If prime[p] is true, then it is a prime number
// we need to ignore it and now mark all it's multiples
if (isPrime[number] == true) {
// Update all multiples of p
for (int i = number * 2; i <= n; i += number)
isPrime[i] = false;
}
}
// Print all prime numbers
// At this point only the numbers which are set as true are prime.
for (int i = 2; i <= n; i++) {
if (isPrime[i] == true)
}
}
public static void main
(String[] args
) {
sieveOfEratosthenes(30);
}
}
Ly8gY29kZSBvYnRhaW5lZCBmcm9tIHN0dWR5YWxnb3JpdGhtcy5jb20KCmNsYXNzIFNpZXZlT2ZFcmF0b3N0aGVuZXMgewoKICBzdGF0aWMgdm9pZCBzaWV2ZU9mRXJhdG9zdGhlbmVzKGludCBuKSB7CgogICAgLy8gQ3JlYXRlIGEgYm9vbGVhbiBhcnJheSAicHJpbWVbMC4ubl0iIGFuZCBpbml0aWFsaXplCiAgICAvLyBhbGwgZW50cmllcyBpdCBhcyB0cnVlLiBBIHZhbHVlIGluIGlzUHJpbWVbaV0gd2lsbAogICAgLy8gZmluYWxseSBiZSBmYWxzZSBpZiBpIGlzIE5vdCBhIHByaW1lLCBlbHNlIHRydWUuCgogICAgYm9vbGVhbiBpc1ByaW1lW10gPSBuZXcgYm9vbGVhbltuICsgMV07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgaXNQcmltZVtpXSA9IHRydWU7CgogICAgZm9yIChpbnQgbnVtYmVyID0gMjsgbnVtYmVyICogbnVtYmVyIDw9IG47IG51bWJlcisrKSB7CgogICAgICAvLyBJZiBwcmltZVtwXSBpcyB0cnVlLCB0aGVuIGl0IGlzIGEgcHJpbWUgbnVtYmVyCiAgICAgIC8vIHdlIG5lZWQgdG8gaWdub3JlIGl0IGFuZCBub3cgbWFyayBhbGwgaXQncyBtdWx0aXBsZXMKICAgICAgaWYgKGlzUHJpbWVbbnVtYmVyXSA9PSB0cnVlKSB7CgogICAgICAgIC8vIFVwZGF0ZSBhbGwgbXVsdGlwbGVzIG9mIHAKICAgICAgICBmb3IgKGludCBpID0gbnVtYmVyICogMjsgaSA8PSBuOyBpICs9IG51bWJlcikKICAgICAgICAgIGlzUHJpbWVbaV0gPSBmYWxzZTsKICAgICAgfQogICAgfQoKICAgIC8vIFByaW50IGFsbCBwcmltZSBudW1iZXJzCiAgICAvLyBBdCB0aGlzIHBvaW50IG9ubHkgdGhlIG51bWJlcnMgd2hpY2ggYXJlIHNldCBhcyB0cnVlIGFyZSBwcmltZS4KICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG47IGkrKykgewogICAgICBpZiAoaXNQcmltZVtpXSA9PSB0cnVlKQogICAgICAgIFN5c3RlbS5vdXQucHJpbnQoaSArICIgIik7CiAgICB9CiAgfQoKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgogICAgc2lldmVPZkVyYXRvc3RoZW5lcygzMCk7CiAgfQp9