Dwie listy, jak znaleźć te same elementy w obu

Odpowiedz Nowy wątek
2011-09-25 14:43
0

Mam dwie listy, w których zgromadzone są liczby. Chciałbym porównać obie listy, poszukać w nich tych samych elementów, jak przy NWD dla rozkładu przez czynniki pierwsze. Kiedy program je znajdzie, aby potem je pomnożył...

Dzięki wielkie za pomoc

P.S. Jestem bardzo początkującym użytkownikiem Javy, więc proszę o litość :P

Pozostało 580 znaków

2011-09-25 14:51
bo
0

Jesteś trzecią osobą na forum, która dostała to zadanie.
Piszę przy założeniu, że listy są typu ArrayList<integer> i nazywają się lista1 i lista2

int nwd=1;
for(int i=0;i<lista1.size();i++)
{
   int indeks=lista2.indexOf(lista1.get(i)); //sprawdzamy czy kolejna liczba z lista1 jest w lista2
   if(indeks>=0) //jest
   {
       nwd*=lista1.get(i);
       lista2.remove(indeks);
   }
}

Pozostało 580 znaków

2011-09-25 15:00
0

A jakbyś miał coś dodać lub poprawić w tym kodzie :

List<Integer> ListaC = new ArrayList<Integer>();
        List<Integer> ListaD = new ArrayList<Integer>();
        int c = 0;
        int d = 0;
        int nwd2 = 1;

        if (b==0){
            return a;
        }
        for (c=2; ((a & c) == 0); c++){
            a = a/c;
            ListaC.add(c);
        }
        for (d=2; ((b & d) == 0);d++){
            b = b/d;
            ListaD.add(d);
        }
        return nwd2;
        } 

P.S. Pewnie jesteśmy z tej samej uczelni, lub nawet wydziału ;p

edytowany 1x, ostatnio: misiaty91, 2011-09-25 15:00

Pozostało 580 znaków

2011-09-25 15:16
bo
0

Wpierw bym wyznaczył liczby pierwsze <=Math.max(a,b) i zapamiętał je w liście (np. primes). A potem
for(int i=0;c<primes.size();i++)
{
int c=primes(i);
while((a%c)==0)
{
a=a/c;
ListaC.add(c);
}
}

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0