Soluzione 5.2

Ecco una possibile soluzione
import java.util.Scanner;

public class ErastoteneTester
{

    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int max = 0;
        while (max <= 0)
        {
            System.out.println("Inserisci il valore massimo (intero positivo):");
            try
            { max = Integer.parseInt(in.nextLine()); }
            catch (NumberFormatException e) 
            { max = -1; }
        }

        boolean[] nonPrimes = new boolean[max];
        for (int i = 2; i < max; i++)
        {  
            int j = 2 * i;   // potremmo anche scrivere  int j = i * i; perche`?
            while (j < max)
            {
                nonPrimes[j] = true;
                j += i;
            }
        }

        System.out.println("Numeri primi minori di " + max + ":");
        for (int i = 1; i < max; i++)
            if (!nonPrimes[i]) System.out.println(i);
    }
}