1. A memory programming method for a NAND flash with a plurality of multi level cells, comprising: performing a first programming operation to program the multi level cell from an initial state to a first target state, which corresponds to a first storage data and has a first threshold voltage range, wherein the first threshold voltage range is between a first voltage and a second voltage larger than the first voltage; setting a flag bit of the NAND flash to a first state to indicate that the first programming operation has been performed; performing a second programming operation to program the multi level cell from the first target state to a second target state, which corresponds to the first storage data and has a second threshold voltage range, wherein the second threshold voltage range is between the second voltage and a third voltage larger than the second voltage; and setting the flag bit to a second state to indicate that the second programming operation has been performed.