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

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

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);
   }
}
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

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);
}
}

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