fork download
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. public class Main {
  5.  
  6. // Function to find all prime numbers up to n using Sieve of Eratosthenes
  7. public static List<Integer> sieve(int n) {
  8. // Create a boolean array prime[0..n] and initialize all entries as true
  9. boolean[] prime = new boolean[n + 1];
  10. for (int i = 0; i <= n; i++) {
  11. prime[i] = true; // Assume all numbers are prime initially
  12. }
  13.  
  14. // 0 and 1 are not prime numbers
  15. prime[0] = false;
  16. prime[1] = false;
  17.  
  18. // Only need to check numbers up to sqrt(n)
  19. int limit = (int) Math.sqrt(n);
  20.  
  21. // Mark multiples of each prime as not prime
  22. for (int p = 2; p <= limit; p++) {
  23. if (prime[p]) { // If p is prime
  24. for (int i = p * p; i <= n; i += p) { // Mark multiples
  25. prime[i] = false;
  26. }
  27. }
  28. }
  29.  
  30. // Collect all prime numbers into a list
  31. List<Integer> primes = new ArrayList<>();
  32. for (int i = 0; i <= n; i++) {
  33. if (prime[i]) {
  34. primes.add(i);
  35. }
  36. }
  37.  
  38. return primes; // Return all primes up to n
  39. }
  40.  
  41. // Function to find prime numbers in a specific range [start, end]
  42. public static List<Integer> sieveRange(int start, int end) {
  43. // Step 1: Find all primes up to 'end'
  44. List<Integer> primes = sieve(end);
  45.  
  46. // Step 2: Create a list to store primes in the range [start, end]
  47. List<Integer> rangePrimes = new ArrayList<>();
  48.  
  49. // Step 3: Filter primes that are >= start
  50. for (int prime : primes) {
  51. if (prime >= start) {
  52. rangePrimes.add(prime);
  53. }
  54. }
  55.  
  56. return rangePrimes; // Return primes in the desired range
  57. }
  58.  
  59. public static void main(String[] args) {
  60. int l = 1; // Start of the range
  61. int r = 100; // End of the range
  62.  
  63. // Get all prime numbers in the range [l, r]
  64. List<Integer> primesInRange = sieveRange(l, r);
  65.  
  66. // Print all prime numbers in the range
  67. System.out.println("Prime numbers between " + l + " and " + r + " are:");
  68. for (int prime : primesInRange) {
  69. System.out.println(prime);
  70. }
  71. }
  72. }
  73.  
Success #stdin #stdout 0.16s 57872KB
stdin
Standard input is empty
stdout
Prime numbers between 1 and 100 are:
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97