Zadanie Prime Factorization - błąd w algorytmie

0

Wykonałem to zadanie: Have the user enter a number and find all Prime Factors (if there are any) and display them.

public class PrimeFactorization {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		long number = in.nextLong();
		
		for(int factor = 2; number != 1;){
			while(number % factor == 0){
				System.out.print(factor + " ");
				number /= factor;
			}	
			++factor;
		}
		in.close();
	}
}

I kiedy podaję jakąś dużą liczbę, np. 456456789787887 to Eclipse po chwili strasznie muli, a program wyświetla same cyfry -1 za czynnikami. Gdzie jest błąd?

0

Debuger w dłoń... Wstaw breakpointa i klikaj krok po kroku.

0

Nigdy nie używałem debuggera. Zaraz to ogarnę.

0

Tak będzie szybciej:

        for(long factor=2;(number>1)&&(factor*factor<=number);++factor){
            while(number%factor==0){
                System.out.print(factor+" ");
                number/=factor;
            }    
        }
        if(number>1) System.out.print(number);
1

A co jeśli jakimś cudem wpisujesz wielką liczbę pierwszą, albo taką której najmniejszy czynnik pierwszy jest większy niż zakres inta?
long number, i nagle int factor.

0

A rzeczywiście. Zmieniłem number na long, ale factora zmienić już zapomniałem. Teraz wszystko działa. Dzięki. :)

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