class LiczbyPierwsze { int[] pierwsze; LiczbyPierwsze(int n) { if (n < 1) throw new IllegalArgumentException("Liczba musi być większa od zera"); int[] czyPierwsza = new int[n+1]; for (int i = 1; i <= n; i++) czyPierwsza[i] = 1; czyPierwsza[1] = 0; for (int i = 4; i <= n; i = i + 2) czyPierwsza[i] = 0; for (int i = 3; i <= n; i = i + 2) { for (int j = 3; j <= Math.sqrt(i); j = j + 2) { if(i % j == 0) { czyPierwsza[i]=0; } } } int iloscPierwszych=0; for (int i = 1; i <= n; i++) { if(czyPierwsza[i] == 1) { iloscPierwszych++; } } pierwsze = new int[iloscPierwszych]; int k = 0; for (int i = 2; i <= n; i++) { if(czyPierwsza[i] == 1) { pierwsze[k] = i; k++; } } } public int liczba(int m) { if (m < 0 || m >= pierwsze.length) throw new ArrayIndexOutOfBoundsException("Index poza zakresem tablicy znalezionych liczb pierwszych"); return pierwsze[m]; } } public class Test { public static void main(String[] args) { if (args.length == 0) { System.out.println("Nie przekazano argumentow"); System.exit(1); } try { int n = Integer.parseInt(args[0]); LiczbyPierwsze p = new LiczbyPierwsze(n); for (int i = 1; i < args.length; i++) { try { n = Integer.parseInt(args[i]); System.out.println(n + " - " + p.liczba(n)); } catch (NumberFormatException ex) { System.out.println(args[i] + " - nie jest liczba clakowita"); } catch (ArrayIndexOutOfBoundsException ex) { System.out.println(args[i] + " - liczba spoza zakresu"); } } } catch (NumberFormatException ex) { System.out.println(args[0] + " - nie jest liczba calkowita"); System.exit(1); } catch (IllegalArgumentException ex) { System.out.println(args[0] + " - nieprawidlowy zakres"); System.exit(1); } } }