prime factorization techniques