Facebook
From Arkadiusz Dębski, Bartosz Rodak, 6 Years ago, written in Java.
Embed
Download Paste or View Raw
Hits: 246
  1. class LiczbyPierwsze
  2. {
  3.         int[] pierwsze;
  4.  
  5.         LiczbyPierwsze(int n)
  6.         {
  7.                 if (n < 1)
  8.                         throw new IllegalArgumentException("Liczba musi być większa od zera");
  9.  
  10.                 int[] czyPierwsza = new int[n+1];
  11.  
  12.                 for (int i = 1; i <= n; i++)
  13.                         czyPierwsza[i] = 1;
  14.  
  15.                 czyPierwsza[1] = 0;
  16.  
  17.                 for (int i = 4; i <= n; i = i + 2)
  18.                         czyPierwsza[i] = 0;
  19.  
  20.                 for (int i = 3; i <= n; i = i + 2)
  21.                 {
  22.                         for (int j = 3; j <= Math.sqrt(i); j = j + 2)
  23.                         {
  24.                                 if(i % j == 0)
  25.                                 {
  26.                                         czyPierwsza[i]=0;
  27.                                 }
  28.                         }
  29.                 }
  30.  
  31.                 int iloscPierwszych=0;
  32.  
  33.                 for (int i = 1; i <= n; i++)
  34.                 {
  35.                         if(czyPierwsza[i] == 1)
  36.                         {
  37.                                 iloscPierwszych++;
  38.                         }
  39.                 }
  40.  
  41.                 pierwsze = new int[iloscPierwszych];
  42.  
  43.                 int k = 0;
  44.  
  45.                 for (int i = 2; i <= n; i++)
  46.                 {
  47.                         if(czyPierwsza[i] == 1)
  48.                         {
  49.                                 pierwsze[k] = i;
  50.                                 k++;
  51.                         }
  52.                 }
  53.         }
  54.  
  55.         public int liczba(int m)
  56.         {
  57.                 if (m < 0 || m >= pierwsze.length)
  58.                         throw new ArrayIndexOutOfBoundsException("Index poza zakresem tablicy znalezionych liczb pierwszych");
  59.  
  60.                 return pierwsze[m];
  61.         }
  62. }
  63. public class Test
  64. {
  65.         public static void main(String[] args)
  66.         {
  67.                 if (args.length == 0)
  68.                 {
  69.                         System.out.println("Nie przekazano argumentow");
  70.                         System.exit(1);
  71.                 }
  72.  
  73.                 try
  74.                 {
  75.                        
  76.                         int n = Integer.parseInt(args[0]);
  77.                         LiczbyPierwsze p = new LiczbyPierwsze(n);
  78.  
  79.                         for (int i = 1; i < args.length; i++)
  80.                         {
  81.                                 try
  82.                                 {
  83.                                         n = Integer.parseInt(args[i]);
  84.                                         System.out.println(n + " - " + p.liczba(n));
  85.                                 }
  86.  
  87.                                 catch (NumberFormatException ex)
  88.                                 {
  89.                                         System.out.println(args[i] + " - nie jest liczba clakowita");
  90.                                 }
  91.  
  92.                                 catch (ArrayIndexOutOfBoundsException ex)
  93.                                 {
  94.                                         System.out.println(args[i] + " - liczba spoza zakresu");
  95.                                 }
  96.                         }
  97.  
  98.                 }
  99.  
  100.                 catch (NumberFormatException ex)
  101.                 {
  102.                         System.out.println(args[0] + " - nie jest liczba calkowita");
  103.                         System.exit(1);
  104.  
  105.                 }
  106.                 catch (IllegalArgumentException ex)
  107.                 {
  108.                         System.out.println(args[0] + " - nieprawidlowy zakres");
  109.                         System.exit(1);
  110.                 }
  111.         }
  112. }