import java.util.Scanner; class Primes { public static void main(String[] args) { Scanner tastiera = new Scanner(System.in); int sup; System.out.print("Inserire l’estremo superiore dell’intervallo di ricerca: "); sup = tastiera.nextInt(); System.out.println("I numeri primi minori (o uguali) di " + sup +" sono: "); printPrimes(sup); // printPrimes01(sup); // printPrimes02(sup); System.out.println(); } public static void printPrimes(int n) { for (int i = 2; i <= n; i++) if (isPrime(i)) System.out.print(i + " "); } public static boolean isPrime(int n) { for (int i = 2; i < n; i++) if (n % i == 0) return false; return true; } // soluzione alternativa che non usa un metodo ausiliario public static void printPrimes01(int n) { boolean isPrime; for (int i = 2; i <= n; i++) { isPrime = true; // da inizializzare ad ogni ciclo! for (int j = 2; j < i; j++) if (i % j == 0) { isPrime = false; break; // si può anche omettere } if (isPrime) System.out.print(i + " "); } } // soluzione alternativa che cerca i divisori tra 1 e i (compresi) e li conta. // il valore i è primo se questi suoi divisori sono esattamente 2. public static void printPrimes02(int n) { int divisori; for (int i = 2; i <= n; i++) { divisori = 0; // da inizializzare ad ogni ciclo! for (int j = 1; j <= i; j++) if (i % j == 0) divisori++; if (divisori == 2) // solo 1 e i System.out.print(i + " "); } } }