Witam.

Mam za zadanie rozłożyć liczbę na czynniki pierwsze, z tym poradziłem sobie bez problemu. Problem pojawił się przy wyświetlaniu wyniku. Mianowicie zwracam sobie tablice z czynnikami pierwszymi i teraz jeśli w tej tablicy jakieś liczby się powtarzają to zapisuje je w postaci potęgi. Mam taką metodę:

	public static void  wyswietlanie(int liczba,int[]tab){
		ArrayList<Wyswietlanie> liczby = new ArrayList<Wyswietlanie>();
		for(int i=0;i<tab.length;i++){
			int licznik=0;
			for(int j=0;j<tab.length;j++){
				if(tab[i]==tab[j]){
					licznik++;
				}
			}
			if(liczby.size()==0){
				liczby.add(new Wyswietlanie(tab[i], licznik));
			}
            else{
				for(int j=0;j<liczby.size();j++){
					if(liczby.get(j).liczba!=tab[i]){
						liczby.add(new Wyswietlanie(tab[i], licznik));
					}
				}
			}
			
			
		}
		for(int i=0;i<liczby.size();i++){
			if(i == 0){
				if(liczby.get(i).potega == 1){
					System.out.print(liczby.get(i).liczba);
				}
				else{
					System.out.print(liczby.get(i).liczba+"^"+liczby.get(i).potega);
				}
			}
			else{
				System.out.print("*");
				if(liczby.get(i).potega == 1){
					System.out.print(liczby.get(i).liczba);
				}
				else{
					System.out.print(liczby.get(i).liczba+"^"+liczby.get(i).potega);
				}
			}
		}
		
		

Metoda zlicza ilość powtórzeń danej liczby w tablicy i dodaje ją do arraylisty. Problem pojawia się przy linijce:

if(liczby.get(j).liczba!=tab[i]){

gdyż w ostatnim przebiegu pętli dodaje mi się dwa razy a czasami więcej ta sama wartość. Nie wiem o co może chodzić. Penie o coś banalnego ale nie mogę na to wpaść. Pokaże jeszcze przykład co dostaje na wyjściu:

 
123456 - 2^6*3*643*643
1007 - 19*53
1000 - 2^3*5^3*5^3*5^3