implementacja metody NWD w JAVIE

0

Witam.
Mam zadanie, z którym walczę już jakiś czas i nie mogę dać rady:(
Otóż:
muszę zaimplementować metodę NWD (największy wspólny dzielnik) polegającą na rozkładzie liczby na czynniki pierwsze w JAVIE.

Mam już ogólne pojęcie jak powinien wyglądać kod, lecz nie potrafię tego przekuć na konkretne zapisy. Wujek google nic nie pomaga.

Moja koncepcja ogólnie wygląda tak:
Mam trzy liczby - a, b i c.
Dzielę liczbę a przez c (modulo)
jeśli się dzieli bez reszty - dzielę b przez c (modulo)
jeśli się dzieli bez reszty - zapisuję c do tablicy
jeśli się nie dzieli - do liczby c dodaję 1
i robię tak dopóki c stanie się równe a lub c stanie się równe b.
Potem wyciągam z tablicy największą liczbę (która będzie ostatnią zapisaną) i ona będzie tym największym wspólnym dzielnikiem.

public class zadanko {
	
	int nwd (int a, int b) {
		int c;
		while (a == c | a == b) {
			if (a % c == 0) {
				if (b % c == 0) {
					zapisuję c do tablicy; }
				else
					c++; }
			else
				c++;}
		
		segreguję tablicę
		wyciągam jej największy element
						
				}
				
}

Niestety można powiedzieć, że jestem "niepełnosprawna programistycznie" i nie wiem jak stworzyć tablicę i jak zapisywać do niej moje liczby c.
Do tego eclipse wywala mi błąd, że moja liczba b powinna być typu boolean.

Proszę o pomoc - w którym miejscu powinna znaleźć się komenda na utworzenie tablicy, jak do niej zapisywać i proszę o wytknięcie mi wszystkich błędów.

0

Uwagi javowe:

  1. tablica powinna być zadeklarowana gdzieś przed pętlą, a jak zapisywać, to są podstawy języka ;] http://www.google.pl/?q=java+array+tutorial
  2. c powinno mieć jakąś wartość przed wejściem do pętli, bo tam już tę wartość odczytujesz
  3. lub zapisujemy za pomocą ||, a nie | (http://download.oracle.com/javase/tutorial/java/nutsandbolts/operators.html)
  4. ze swoich dwóch if'ów możesz zrobić jednego
  5. w javie deklarując tablcę musisz znać jej długość, implementując Twoją koncepcję lepiej użyć Vector'a, bo owej długości nie znasz

Uwagi algorytmiczne:
6. w Twoim kodzie nie zmieniasz wartości a, b i c w przypadku true-true, co spowoduje, że algorytm się zapętli po znalezieniu pierwszego wspólnego dzielnika (przeanalizuj)
7. wydaje mi się, że robisz coś zupełnie innego, niż powinnaś :p przyjęłaś koncepcję znajdowania wszystkich dzielników po kolei i wyboru największego z nich, tymczasem masz skorzystać z podziału na czynniki pierwsze i z tych czynników pierwszych coś zrobić - mam nadzieję, że wiesz co :p poza tym możesz to poprawić na co najmniej dwa sposoby:
a) robiąc odpowiednie modyfikacje w swoim algorytmie
b) robiąc metodę, która rozkłada liczbę na czynniki pierwsze i wykorzystać ją później dwa razy dla a i b
8. [jeżeli wybierzesz wersję 7.a), to] nie ma potrzeby pamiętać wszystkich wspólnych dzielników w tablicy/wektorze, wystarczy, że zapamiętasz ich iloczyn
9. w Twoim kodzie c przyjmuje wszystkie kolejne wartości, a nie tylko wartości, które są liczbami pierwszymi, ale w tym przypadku (po poprawieniu 7.) nie powinno to psuć działania algorytmu

wprowadź poprawki i wrzuć kod

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