In this paper, we study a retailer price optimization problem which includes the practical constraints: maximum number of price changes and minimum amount of price change (if a change is recommended). We provide a closed-form formula for the Euclidean projection onto the feasible set defined by these two constraints, based on which a simple gradient projection algorithm is proposed to solve the price optimization problem. We study the convergence and solution quality of the proposed algorithm. We extend the base model to include upper/lower bounds on the individual product prices and solve it with some adjustments to the gradient projection algorithm. Numerical results are reported to demonstrate the performance of the proposed algorithm.