import java.util.ArrayList;
import java.util.List;
public class Main {
// Function to find all prime numbers up to n using the Sieve of Eratosthenes
public static List<Integer> sieve(int n) {
boolean[] prime = new boolean[n + 1];
for (int i = 0; i <= n; i++) {
prime[i] = true;
}
prime[0] = false;
prime[1] = false;
int limit
= (int) Math.
sqrt(n
); for (int p = 2; p <= limit; p++) {
if (prime[p]) {
for (int i = p * p; i <= n; i += p) {
prime[i] = false;
}
}
}
List<Integer> primes = new ArrayList<>();
for (int i = 0; i <= n; i++) {
if (prime[i]) {
primes.add(i);
}
}
return primes;
}
// Function to find primes in a range [start, end] using a segmented sieve
public static List<Integer> sieveRange(int start, int end) {
List<Integer> primes = sieve(end);
List<Integer> rangePrimes = new ArrayList<>();
for (int prime : primes) {
if (prime >= start) {
rangePrimes.add(prime);
}
}
return rangePrimes;
}
public static void main
(String[] args
) { int l = 1;
int r = 100;
List<Integer> primesInRange = sieveRange(l, r);
for (int prime : primesInRange) {
}
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKCnB1YmxpYyBjbGFzcyBNYWluIHsKCiAgICAvLyBGdW5jdGlvbiB0byBmaW5kIGFsbCBwcmltZSBudW1iZXJzIHVwIHRvIG4gdXNpbmcgdGhlIFNpZXZlIG9mIEVyYXRvc3RoZW5lcwogICAgcHVibGljIHN0YXRpYyBMaXN0PEludGVnZXI+IHNpZXZlKGludCBuKSB7CiAgICAgICAgYm9vbGVhbltdIHByaW1lID0gbmV3IGJvb2xlYW5bbiArIDFdOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICBwcmltZVtpXSA9IHRydWU7CiAgICAgICAgfQogICAgICAgIHByaW1lWzBdID0gZmFsc2U7CiAgICAgICAgcHJpbWVbMV0gPSBmYWxzZTsKCiAgICAgICAgaW50IGxpbWl0ID0gKGludCkgTWF0aC5zcXJ0KG4pOwogICAgICAgIGZvciAoaW50IHAgPSAyOyBwIDw9IGxpbWl0OyBwKyspIHsKICAgICAgICAgICAgaWYgKHByaW1lW3BdKSB7CiAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gcCAqIHA7IGkgPD0gbjsgaSArPSBwKSB7CiAgICAgICAgICAgICAgICAgICAgcHJpbWVbaV0gPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgTGlzdDxJbnRlZ2VyPiBwcmltZXMgPSBuZXcgQXJyYXlMaXN0PD4oKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgaWYgKHByaW1lW2ldKSB7CiAgICAgICAgICAgICAgICBwcmltZXMuYWRkKGkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBwcmltZXM7CiAgICB9CgogICAgLy8gRnVuY3Rpb24gdG8gZmluZCBwcmltZXMgaW4gYSByYW5nZSBbc3RhcnQsIGVuZF0gdXNpbmcgYSBzZWdtZW50ZWQgc2lldmUKICAgIHB1YmxpYyBzdGF0aWMgTGlzdDxJbnRlZ2VyPiBzaWV2ZVJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgewogICAgICAgIExpc3Q8SW50ZWdlcj4gcHJpbWVzID0gc2lldmUoZW5kKTsKICAgICAgICBMaXN0PEludGVnZXI+IHJhbmdlUHJpbWVzID0gbmV3IEFycmF5TGlzdDw+KCk7CgogICAgICAgIGZvciAoaW50IHByaW1lIDogcHJpbWVzKSB7CiAgICAgICAgICAgIGlmIChwcmltZSA+PSBzdGFydCkgewogICAgICAgICAgICAgICAgcmFuZ2VQcmltZXMuYWRkKHByaW1lKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJhbmdlUHJpbWVzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBpbnQgbCA9IDE7IAogICAgICAgIGludCByID0gMTAwOyAKICAgICAgICBMaXN0PEludGVnZXI+IHByaW1lc0luUmFuZ2UgPSBzaWV2ZVJhbmdlKGwsIHIpOwoKICAgICAgICAKICAgICAgICBmb3IgKGludCBwcmltZSA6IHByaW1lc0luUmFuZ2UpIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHByaW1lKTsKICAgICAgICB9CiAgICB9Cn0K