import
java.util.*;
public
class
GFG {
static
int
lower_bound(ArrayList<Long> list,
long
elem)
{
for
(
int
i =
0
; i < list.size(); i++) {
if
(list.get(i) >= elem)
return
i;
}
return
list.size();
}
static
ArrayList<Long> sieve(
long
n)
{
ArrayList<Boolean> prime =
new
ArrayList<Boolean>();
for
(
int
i =
0
; i <= n; i++)
prime.add(
true
);
prime.set(
0
,
false
);
prime.set(
1
,
false
);
int
m = (
int
)Math.sqrt(n);
for
(
int
p =
2
; p <= m; p++) {
if
(prime.get(p)) {
for
(
int
i = p *
2
; i <= n; i += p)
prime.set(i,
false
);
}
}
ArrayList<Long> ans =
new
ArrayList<Long>();
for
(
int
i =
0
; i < n; i++)
if
(prime.get(i))
ans.add((
long
)i);
return
ans;
}
static
ArrayList<Long> sieveRange(
long
start,
long
end)
{
ArrayList<Long> ans = sieve(end);
int
lower_bound_index = lower_bound(ans, start);
for
(
int
i =
0
; i < lower_bound_index; i++)
ans.remove(
0
);
return
ans;
}
public
static
void
main(String[] args)
{
long
start =
50
;
long
end =
100
;
ArrayList<Long> ans = sieveRange(start, end);
for
(Long i : ans)
System.out.print(i +
", "
);
}
}