1 import java.util.Scanner;
2
3 public class EfficientPrimeNumbers {
4 public static void main(String[] args) {
5 Scanner input = new Scanner(System.in);
6 System.out.print("Find all prime numbers <= n, enter n: ");
7 int n = input.nextInt();
8
9
10 java.util.List<Integer> list =
11 new java.util.ArrayList<>();
12
13 final int NUMBER_PER_LINE = 10;
14 int count = 0;
15 int number = 2;
16 int squareRoot = 1;
17
18 System.out.println("The prime numbers are \n");
19
20
21 while (number <= n) {
22
23 boolean isPrime = true;
24
25 if (squareRoot * squareRoot < number) squareRoot++;
26
27
28 for (int k = 0; k < list.size()
29 && list.get(k) <= squareRoot; k++) {
30 if (number % list.get(k) == 0) {
31 isPrime = false;
32 break;
33 }
34 }
35
36
37 if (isPrime) {
38 count++;
39 list.add(number);
40 if (count % NUMBER_PER_LINE == 0) {
41
42 System.out.println(number);
43 }
44 else
45 System.out.print(number + " ");
46 }
47
48
49 number++;
50 }
51
52 System.out.println("\n" + count +
53 " prime(s) less than or equal to " + n);
54 }
55 }