Program wyszukujący liczby pierwsze z podanego zakresu

Program wyszukujący liczby pierwsze z podanego zakresu
M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 88
0

Tzn. nie potrafię zapisać zmiennej prywatnej która będzie w public LIczbyPierwsze( int n) i będę jej mógł użyć w int getMax

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 88
0

Poradziłem sobie :D dziękuje!!!

Kurde a jednak jak sobie sprawdzam jaka jest wartosc getMax() gdy podam args[0] 14 to mi wychodzi 70 nie mam pojęcia dlaczego

źle?

Kopiuj
public class LiczbyPierwsze
{
   private int[] liczby;
   int z=0;
   public LiczbyPierwsze(int n) 
   {
      liczby = new int[n];
      int index = 0;
      for (int i = 2; i < n; i++)
      {
         if (isPrime(i))
         {
            liczby[index++] =  i; 
         }
      }
   }
   private int i;
      
   public int getMax()
   {
      return i; 
   }
  
   
   private boolean isPrime(int n)
   {
      if (n < 2)
      {
         return false;
      }
      for (int i = 2; i < n; i++)
      {
         if (n % i == 0)
         {   
            return false;
         }
      }
   return true;
   }
 
   public int liczba(int m)
   {
      return liczby[m];
   }
}

no oczywiście, że źle bo tworzę jakieś nowe i, a ja chce tamto :D ale nie moge użyć private w tej metodzie..

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 88
0
Kopiuj

```public class Test
{
   public static void main(String[] args)
   {
      int n=Integer.parseInt(args[0]);
      if(n<2)
      {
         System.out.print(args[0]);
         System.out.print(" - "+"Nieprawidłowy zakres");
      }
      else
      {
         LiczbyPierwsze pierwsze = new LiczbyPierwsze(n);
         for(int i=1; i<args.length; i++)
         {
            if(Integer.parseInt(args[i])<=pierwsze.getMax())
            {
               System.out.print(Integer.parseInt(args[i])+ " - ");
               System.out.print(pierwsze.liczba(Integer.parseInt(args[i])));
               System.out.println(); 
            }
            else
            {
               System.out.print(Integer.parseInt(args[i]));
               System.out.print("-"+"Liczba spoza zakresu");
               System.out.println();
            }
         }
      }
   }
}

```java

```public class LiczbyPierwsze
{
   private int[] liczby;
   int z=0;
   int index;
   public LiczbyPierwsze(int n) 
   {
      liczby = new int[n];
      for (int i = 2; i < n; i++)
      {
         if (isPrime(i))
         {
            liczby[index++] = i;             
         }
      }
   }
   
   public int getMax()
   {
      return liczby[index];
   }
   
    
  
   
   private boolean isPrime(int n)
   {
      if (n < 2)
      {
         return false;
      }
      for (int i = 2; i < n; i++)
      {
         if (n % i == 0)
         {   
            return false;
         }
      }
   return true;
   }
 
   public int liczba(int m)
   {
      return liczby[m];
   }
}
Myślałem, że się z tym uporałem ale jak wpisze Java Test 13 0 to wyskoczy mi 0-2 tak jak powinno a jak np java Test 13 2 to juz 2-spoza zakresu.. nie rozumiem :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.