W każdym kroku wyliczany jest Jeśli wynik jest w którymś momencie równy algorytm kończy się błędem, gdyż wtedy i dalsze działanie będzie już tylko powtarzaniem dotychczasowych obliczeń. Jeśli w którymkolwiek momencie wynik jest większy od 1 i mniejszy od jest on dzielnikiem
Jeśli patrzymy na sekwencję modulo szukany dzielnik jej wartości muszą w końcu utworzyć cykl, o długości rzędu Diagram takiej sekwencji jest przedstawiony na rysunku – przypomina grecką małą literę (pol. ro), stąd nazwa algorytmu.
Algorytm Wejście: – liczba, którą próbujemy rozłożyć; – pseudolosowa funkcja modulo
Wyjście: nietrywialny czynnik albo błąd.
x ← 2, y ← 2; d ← 1 Dopóki d = 1: x ← f(x) y ← f(f(y)) d ← NWD(|x − y|, n) Jeśli 1 < d < n, to zwróć d. Jeśli d = n, to zasygnalizuj porażkę.
Warto zauważyć, że algorytm zawsze kończy się błędem dla będącego liczbą pierwszą, ale może też zwrócić błąd dla złożonego. Dlatego po błędzie można spróbować ponownie, z inną funkcją
Jako funkcji używa się wielomianów modulo ze współczynnikami całkowitymi. Najczęściej mają one postać: .