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