finished, maybe stop it from repeating factors reversed.
also, factors should be stored in array list